Graag uw mening: datumfunctie
Omdat ik altijd loop te #$(*&@ met het omzetten van datums naar een formaat zoals ik het wil heb ik hier een functie voor gemaakt. Graag hoor ik van jullie of er verbeterpunten zijn, zodat ik het kan aanpassen. Laat ook even weten of je het handig lijkt om dit script tussen de 'Snippets' te plaatsen.
Let op: Ik ben een amateur en heb geen opleiding gevolgd. Wees dus een beetje lief.
Let op: Ik ben een amateur en heb geen opleiding gevolgd. Wees dus een beetje lief.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
<?php
// Set country / language
$lang = 'NL';
define('SITE_LANGUAGE', $lang); // Site language (EN,NL,etc.)
function fDate($sDate,$sFormat) {
/**
*
* Function - fDate (Format Date)
*
* Function to format date and time to various output.
* Options to output preferred date and time stamp based on local
*
* $sDate - Date input in following format: yyyy-mm-dd hh:mm:ss
* $sFormat - Format to output date and time. Value: 1 through 9
*
* Output (depending on SITE_LANGUAGE):
* $sFormat = 1 -> 12/7/2010
* $sFormat = 2 -> Tuesday 7 December 2010
* $sFormat = 3 -> Tue 7 December 2010
* $sFormat = 4 -> 4:21:35 PM
* $sFormat = 5 -> 12/7/2010 4:21:35 PM
* $sFormat = 6 -> Tuesday 7 December 2010 at 4:21:35 PM
* $sFormat = 7 -> Tue 7 December 2010 at 4:21:35 PM
* $sFormat = 8 -> Tuesday 7 December 2010 at 16h 21m
* $sFormat = 9 -> 12/7/2010 at 4:21:35 PM
*
**/
// Seperate date and time
$pieces = explode(' ',$sDate);
$date = $pieces[0];
$time = $pieces[1];
// Seperate year, month and day
$pieces = explode('-',$date);
$year = $pieces[0];
$month = $pieces[1];
$day = $pieces[2];
// Seperate hour, minute and second
$pieces = explode(':',$time);
$hour = $pieces[0];
$minute = $pieces[1];
$second = $pieces[2];
// Set country / language
switch(SITE_LANGUAGE) {
case 'NL':
/* Set locale to Dutch */
setlocale(LC_ALL, 'nld_nld');
/* Language adjustments */
$at = 'om';
$h = 'u';
$m = 'm';
break;
default:
/* Set locale to English */
setlocale(LC_ALL, 'En-Us');
/* Language adjustments */
$at = 'at';
$h = 'h';
$m = 'm';
break;
}
// Return format
switch($sFormat) {
#==== Date only ====#
case '1':
return strftime("%x", mktime(0, 0, 0, $month, $day, $year));
break;
case '2':
return strftime("%A %#d %B %Y", mktime(0, 0, 0, $month, $day, $year));
break;
case '3':
return strftime("%a %#d %B %Y", mktime(0, 0, 0, $month, $day, $year));
break;
#==== Time only ====#
case '4':
return strftime("%X", mktime($hour, $minute, $second, $month, $day, $year));
break;
#==== Date and time ====#
case '5':
return strftime("%c",mktime($hour, $minute, $second, $month, $day, $year));
break;
case '6':
return strftime("%A %#d %B %Y ".$at." %X", mktime($hour, $minute, $second, $month, $day, $year));
break;
case '7':
return strftime("%a %#d %B %Y ".$at." %X", mktime($hour, $minute, $second, $month, $day, $year));
break;
case '8':
return strftime("%A %#d %B %Y ".$at." %H".$h." %M".$m, mktime($hour, $minute, $second, $month, $day, $year));
break;
case '9';
return strftime("%x ".$at." %X", mktime($hour, $minute, $second, $month, $day, $year));
break;
}
}
// How to use
$date_posted = '2010-12-06 21:38:35';
echo '<p>' . ucfirst(fDate($date_posted,'1')).'</p>';
// Show all formats:
for($x=1;$x<10;$x++) {
echo '<p class="mailInfo">$sFormat = '.$x.' -> ' . ucfirst(fDate($date_posted,$x)).'</p>';
}
?>
// Set country / language
$lang = 'NL';
define('SITE_LANGUAGE', $lang); // Site language (EN,NL,etc.)
function fDate($sDate,$sFormat) {
/**
*
* Function - fDate (Format Date)
*
* Function to format date and time to various output.
* Options to output preferred date and time stamp based on local
*
* $sDate - Date input in following format: yyyy-mm-dd hh:mm:ss
* $sFormat - Format to output date and time. Value: 1 through 9
*
* Output (depending on SITE_LANGUAGE):
* $sFormat = 1 -> 12/7/2010
* $sFormat = 2 -> Tuesday 7 December 2010
* $sFormat = 3 -> Tue 7 December 2010
* $sFormat = 4 -> 4:21:35 PM
* $sFormat = 5 -> 12/7/2010 4:21:35 PM
* $sFormat = 6 -> Tuesday 7 December 2010 at 4:21:35 PM
* $sFormat = 7 -> Tue 7 December 2010 at 4:21:35 PM
* $sFormat = 8 -> Tuesday 7 December 2010 at 16h 21m
* $sFormat = 9 -> 12/7/2010 at 4:21:35 PM
*
**/
// Seperate date and time
$pieces = explode(' ',$sDate);
$date = $pieces[0];
$time = $pieces[1];
// Seperate year, month and day
$pieces = explode('-',$date);
$year = $pieces[0];
$month = $pieces[1];
$day = $pieces[2];
// Seperate hour, minute and second
$pieces = explode(':',$time);
$hour = $pieces[0];
$minute = $pieces[1];
$second = $pieces[2];
// Set country / language
switch(SITE_LANGUAGE) {
case 'NL':
/* Set locale to Dutch */
setlocale(LC_ALL, 'nld_nld');
/* Language adjustments */
$at = 'om';
$h = 'u';
$m = 'm';
break;
default:
/* Set locale to English */
setlocale(LC_ALL, 'En-Us');
/* Language adjustments */
$at = 'at';
$h = 'h';
$m = 'm';
break;
}
// Return format
switch($sFormat) {
#==== Date only ====#
case '1':
return strftime("%x", mktime(0, 0, 0, $month, $day, $year));
break;
case '2':
return strftime("%A %#d %B %Y", mktime(0, 0, 0, $month, $day, $year));
break;
case '3':
return strftime("%a %#d %B %Y", mktime(0, 0, 0, $month, $day, $year));
break;
#==== Time only ====#
case '4':
return strftime("%X", mktime($hour, $minute, $second, $month, $day, $year));
break;
#==== Date and time ====#
case '5':
return strftime("%c",mktime($hour, $minute, $second, $month, $day, $year));
break;
case '6':
return strftime("%A %#d %B %Y ".$at." %X", mktime($hour, $minute, $second, $month, $day, $year));
break;
case '7':
return strftime("%a %#d %B %Y ".$at." %X", mktime($hour, $minute, $second, $month, $day, $year));
break;
case '8':
return strftime("%A %#d %B %Y ".$at." %H".$h." %M".$m, mktime($hour, $minute, $second, $month, $day, $year));
break;
case '9';
return strftime("%x ".$at." %X", mktime($hour, $minute, $second, $month, $day, $year));
break;
}
}
// How to use
$date_posted = '2010-12-06 21:38:35';
echo '<p>' . ucfirst(fDate($date_posted,'1')).'</p>';
// Show all formats:
for($x=1;$x<10;$x++) {
echo '<p class="mailInfo">$sFormat = '.$x.' -> ' . ucfirst(fDate($date_posted,$x)).'</p>';
}
?>
Gewijzigd op 07/12/2010 17:10:02 door The Ultimate
Ziet er wel netjes uit.
Alleen wat als ik bij $lang "NLD" invul?
Dan gaat je switch niet werken en zullen de diverse $vars onbekend blijven met alle gevolg van dien.
Doe de switch zo en ook dat is opgelost:
Alleen wat als ik bij $lang "NLD" invul?
Dan gaat je switch niet werken en zullen de diverse $vars onbekend blijven met alle gevolg van dien.
Doe de switch zo en ook dat is opgelost:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?php
// Taal-/Landkeuze
switch(SITE_LANGUAGE) {
case 'NL':
/* Set locale to Dutch */
setlocale(LC_ALL, 'nld_nld');
/* Language adjustments */
$at = 'om';
$h = 'u';
$m = 'm';
break;
default:
/* Set locale to English */
setlocale(LC_ALL, 'En-Us');
/* Language adjustments */
$at = 'at';
$h = 'h';
$m = 'm';
break;
}
?>
// Taal-/Landkeuze
switch(SITE_LANGUAGE) {
case 'NL':
/* Set locale to Dutch */
setlocale(LC_ALL, 'nld_nld');
/* Language adjustments */
$at = 'om';
$h = 'u';
$m = 'm';
break;
default:
/* Set locale to English */
setlocale(LC_ALL, 'En-Us');
/* Language adjustments */
$at = 'at';
$h = 'h';
$m = 'm';
break;
}
?>
Gewijzigd op 07/12/2010 16:15:02 door - SanThe -
@SanThe:
Dank je wel voor de nuttige toevoeging. Heb de beginpost aangepast. Denk je dat het zin heeft om dit script tussen de 'Snippets' te plaatsen?
Dank je wel voor de nuttige toevoeging. Heb de beginpost aangepast. Denk je dat het zin heeft om dit script tussen de 'Snippets' te plaatsen?
Foutje: %w moet zijn %e (of %d) (5 keer aanwezig).
Het naar Nederlands zetten met setlocale() werkt hier bij mij niet.
Het naar Nederlands zetten met setlocale() werkt hier bij mij niet.
Mooie functie, ik heb er zelf ook al wel eens een gemaakt maar deze is mooier. Zet hem maar tussen de snippets, ik ga hem zeker nog gebruiken in de toekomst.
Ik denk dat als je er wat meer commentaar bij voegt (een blokje commentaar boven je functie met de mogelijkheden voor $sFormat zou al veel helpen, als dit duidelijk is kunnen veel ide's hiermee overweg. (zeg maar de regels in je switch even in een doccomment erboven)
En iets van foutafhandeling als je 2e switch niks teruggeeft (of daar ook een default)
En iets van foutafhandeling als je 2e switch niks teruggeeft (of daar ook een default)
@SanThe:
The %e modifier is not supported in the Windows implementation of this function. To achieve this value, the %#d modifier can be used instead.
Bij mij werkt het uitstekend en ik werk op een windows-machine. Of gaat het om mijn host?
@Moe BE:
Thanks! Zal hem tussen de snippets plaatsen zodra ik zeker weet dat de functie helemaal klopt.
@TJVB tvb:
Ok, zal ik doen. Ga het aanpassen en dan verander ik het in de mainpost. Maar wat is eigenlijk een 'ide'?
The %e modifier is not supported in the Windows implementation of this function. To achieve this value, the %#d modifier can be used instead.
Bij mij werkt het uitstekend en ik werk op een windows-machine. Of gaat het om mijn host?
@Moe BE:
Thanks! Zal hem tussen de snippets plaatsen zodra ik zeker weet dat de functie helemaal klopt.
@TJVB tvb:
Ok, zal ik doen. Ga het aanpassen en dan verander ik het in de mainpost. Maar wat is eigenlijk een 'ide'?
Gewijzigd op 07/12/2010 16:38:14 door The Ultimate
Nog wat php doc erbij..
En soms zijn je comments in het nederlands en soms en het engels ;)
En soms zijn je comments in het nederlands en soms en het engels ;)
@Niels:
Ja, dat had ik zelf ook al gezien idd. Ga even een doccomment maken en dan zal ik het allemaal in een taal doen. Voorkeur voor een taal? Engels?
Ja, dat had ik zelf ook al gezien idd. Ga even een doccomment maken en dan zal ik het allemaal in een taal doen. Voorkeur voor een taal? Engels?
The Ultimate op 07/12/2010 16:35:46:
@SanThe:
The %e modifier is not supported in the Windows implementation of this function. To achieve this value, the %#d modifier can be used instead.
Bij mij werkt het uitstekend en ik werk op een windows-machine. Of gaat het om mijn host?
The %e modifier is not supported in the Windows implementation of this function. To achieve this value, the %#d modifier can be used instead.
Bij mij werkt het uitstekend en ik werk op een windows-machine. Of gaat het om mijn host?
Het gaat om de %w (weekdag), dat is fout. Dat moet (dag van de maand) óf %e (zonder voorloopnul) óf %d (met voorloopnul) worden.
Gewijzigd op 07/12/2010 16:45:24 door - SanThe -
@SanThe:
Waarom is dat fout? Bij mij werkt %e overigens weer niet. Alleen %d.
Waarom is dat fout? Bij mij werkt %e overigens weer niet. Alleen %d.
@The Ultimate
Wat jij helemaal zelf wilt :)
Wat jij helemaal zelf wilt :)
Okee, maar in je script staat %w (weekdag) en dat is fout.
return strftime("%A %w %B %Y", ......
return strftime("%A %w %B %Y", ......
Inmiddels commentaar toegevoegd en al het commentaar in het Engels.
@Niels:
Het is Engels geworden! ;-)
@SanThe:
Ah, nu snap ik het. Dat is inderdaad onhandig. Ga ik gelijk aanpassen. Weet je een vervanging voor %e? Aangezien dit op Windows niet werkt en ik toch echt zonder leading zero's wil tonen? Thanks!
@Niels:
Het is Engels geworden! ;-)
@SanThe:
Ah, nu snap ik het. Dat is inderdaad onhandig. Ga ik gelijk aanpassen. Weet je een vervanging voor %e? Aangezien dit op Windows niet werkt en ik toch echt zonder leading zero's wil tonen? Thanks!
The Ultimate op 07/12/2010 17:01:37:
Weet je een vervanging voor %e? Aangezien dit op Windows niet werkt en ik toch echt zonder leading zero's wil tonen? Thanks!
Nee helaas, %d of %e.
@SanThe:
Ow, stom. Het stond er gewoon:
To achieve this value, the %#d modifier can be used instead.
Beginpost is inmiddels aangepast.
Ow, stom. Het stond er gewoon:
To achieve this value, the %#d modifier can be used instead.
Beginpost is inmiddels aangepast.




