Hoi,

voor onze wordpress website in het Nederlands heb ik een php geschreven met custom velden.
Alleen komen de maanden er momenteel uit in het Engels.

Ik weet dat dit met strftime mogelijk moet zijn, maar op de plaatsen waar ik dit heb geprobeerd werkt het niet. Iemand die me kan helpen met dit ingewikkeld stukje code ?

<?php
	$start_date = get_field('datum', false, false);
	$start_date = new DateTime($start_date);
	$end_date = get_field('eind_datum', false, false);
	$end_date = new DateTime($end_date);
	$start_month = $start_date->format('F');
	$end_month = $end_date->format('F');
?>				
<?php if ( get_field('eind_datum') and get_field('datum') ): ?>
	<span class='datum'>
	<?php 
		if ($start_month == $end_month) {
		  // output July 12-13, 2020
		echo  $start_date->format ('j'); ?>-<?php echo  $end_date->format ('j F Y');
		} else {
		  // output July 12 - August 3, 2020
		echo  $start_date->format('j F'); ?>-<?php echo  $end_date->format ('j F Y');
		}
	?>
	</span>
<?php elseif ( empty(get_field('eind_datum')) and (empty(get_field('datum')) === false)): ?>
	<span class='datum'><?php echo the_field('datum'); ?></span>
Hoi Ariën, ik ben verder gaan puzzelen en ben met een werkbaardere code op de proppen gekomen, alleen blijf ik in de rats zitten met de unix time stamp, alle data worden weergegeven als 1-1 January 1970.

Mocht je me kunnen helpen, dan graag. met de php net manual kom ik er helaas zelf maar niet achter.
De waarde in de sql database is opgeslagen in het "Y-m-d H:i:s" formaat en op de site komt dit er dan als "j F Y" uit.

<?php
$start_date = get_field('datum');
$start_time = date ("Y-m-d H:i:s", strtotime($start_date));
$start_year = date('Y', $start_time);
$start_month = date('F', $start_time);
$start_day = date('j', $start_time);

$end_date = get_field ('eind_datum');
$end_time = date ("Y-m-d H:i:s", strtotime($end_date));
$end_year = date('Y', $end_time);
$end_month = date('F', $end_time);
$end_day = date('j', $end_time);

if (get_field('eind_datum') and get_field('datum') and ($end_month == $start_month)) {
$display_date = $start_day.' - '.$end_day.' '.$end_month.' '.$end_year;
}
elseif (get_field('eind_datum') and get_field('datum') and ($end_month != $start_month)) {
$display_date = $start_day.' '.$start_month.' - '.$end_day.' '.$end_month.', '.$end_year;
}
else {
$display_date = $start_day.' '.$start_month.' '.$start_year;
}

echo $display_date;
?>
Date() ondersteunt geen locales.
Kijk eens naar de DateTime class of strftime().
de 2e parameter van date() is het aantal sec. sinds 1970


<?php
$start_date = get_field('datum');
$start_time = date ("Y-m-d H:i:s", strtotime($start_date));
$start_year = date('Y', $start_time);
?>


$start_time wordt dus iets als '2020-10-17 17:35:00'

Maar die waarde gebruik je weer om start_year te vullen.
en met de senddatum doe je dat ook

ik zou sowieso DateTime gebruiken.
<?php
$datum = new DateTime(get_field('datum'));
?>
en dan waar je het nodig hebt

<?php echo 'het jaar is: ' . $datum->format('Y'); ?>
of welk deel van de datum je maar nodig hebt.

Reageren