Home › Forums › Front-end Issues › ACF Date Picker (date output)
Hi,
Iām using the ACF Date Picker field, but i have a problem with the date output language.
Front-end is in english, but WordPress which is configured in wp-config.php is in french (it must be). What you can do to get the date displayed on the website in english?
Thanks
Tsering
Hi,
when you’re editing your custom date field, you can see “Display format” on the bottom. This will format the display of the date.
http://www.advancedcustomfields.com/resources/field-types/date-picker/
If you’re setting the format in wp backend, use JS date format, but you can also format the date later in PHP – use the code from example
$date = DateTime::createFromFormat('Ymd', get_field('date_picker'));
echo $date->format('d-m-Y');
Thanks for the reply, but I didn’t mean the date format. I mean the language, that is, instead of “Juin” (in french), “June” (in english). Is it possible?
Aha, sure, just use the WordPress function for formatting dates in different languages.
$dateformatstring = "l d F, Y";
$unixtimestamp = strtotime(get_field('date_picker'));
echo date_i18n($dateformatstring, $unixtimestamp);
This is dependent on your blog language setting. More info here: http://codex.wordpress.org/Function_Reference/date_i18n
If you can’t set blog language to french, you can also do it with PHP only.
setlocale(LC_ALL, 'fr_FR');
echo strftime("%A %e %B %Y");
Another example with day of week and month (french):
setlocale(LC_ALL, 'fr_FR');
echo strftime("%A le %d %B, %Y");
//with day of the week = mercredi le 18 septembre, 2013
Thanks,
How to implement it using the ACF?
`<?php the_sub_field(‘data_picker’); ?>
I’m sorry, but it’s a little bit too difficult for me…
Ok, so let’s say ‘data_picker’ is your date field name in ACF. Set the locale before you go into the loop:
<?php setlocale(LC_ALL, 'fr_FR'); ?>
Then inside the loop do these steps:
// FIRST, SET THE WAY YOU WANT TO FORMAT DATE
// DETAILS HERE - https://php.net/strftime
$dateformatstring = "%A le %d %B, %Y";
// THEN, CONVERT THE FIELD FROM ACF TO UNIX TIMESTAMP
$unixtimestamp = strtotime(get_field('data_picker'));
// NOW ECHO THE FRENCH DATE USING PHP'S strftime
echo strftime($dateformatstring, $unixtimestamp);
And if you have your blog set to french, you can just do these steps in the loop:
// FIRST, SET THE WAY YOU WANT TO FORMAT DATE
// DETAILS HERE - http://php.net/manual/en/function.date.php
$dateformatstring = "l d F, Y";
// THEN, CONVERT THE FIELD FROM ACF TO UNIX TIMESTAMP
$unixtimestamp = strtotime(get_field('data_picker'));
// NOW ECHO THE FRENCH DATE USING A WORDPRESS FUNCTION
echo date_i18n($dateformatstring, $unixtimestamp);
Try this with the first (PHP) solution (replace the setlocale line):
setlocale (LC_ALL, 'fr-FR.utf8','fra');
There’s a bunch of locale codes … the top one works, but here’s a big discussion on this topic: Zut alors! Mon dieu! š
I don’t know what I’m doing wrong, but it still doesn’t work. Below my original code:
<?php query_posts( array( 'post_type' => 'custom_post_name', 'post_status' => 'publish', 'posts_per_page' => 1 ) ); ?>
<?php if (have_posts()) : while (have_posts()) : the_post(); ?>
<?php if(have_rows('repeater_field_name')): ?>
<?php while( have_rows('repeater_field_name') ): the_row(); ?>
<?php the_sub_field('date_picker'); ?>
<?php endwhile; ?>
<?php endif; ?>
<?php endwhile; endif; ?>
And what is the current output of your code? What do you see in the browser?
Ha š I thought you were trying to get it in french the whole time…
No big deal, just change the “setlocale” line of code to this:
setlocale(LC_ALL, array('en_GB.UTF8','en_GB','english'));
This sets up everything for UK english. If you want USA english:
setlocale(LC_ALL, array('en_US.UTF8','en_US','english'));
You can specify the values either in an array (like i did here) or as a sequence of string (as shown above with the french example).
This is my final code, but it also does not work:
<?php setlocale(LC_ALL, array('en_US.UTF8','en_US','english')); ?>
<?php query_posts( array( 'post_type' => 'custom_post_name', 'post_status' => 'publish', 'posts_per_page' => 1 ) ); ?>
<?php if (have_posts()) : while (have_posts()) : the_post(); ?>
<?php if(have_rows('repeater_field_name')): ?>
<?php while( have_rows('repeater_field_name') ): the_row(); ?>
// ORIGINAL <?php the_sub_field('date_picker'); ?>
<?php
$dateformatstring = "M";
$unixtimestamp = strtotime(get_sub_field('date_picker'));
echo date_i18n($dateformatstring, $unixtimestamp);
?>
<?php endwhile; ?>
<?php endif; ?>
<?php endwhile; endif; ?>
You’re not using the correct piece of code. If you want to use date_i18n, you have to set the language of your WordPress to English. This is a WP specific function.
To use the setlocale method, use this code inside the loop (the setlocale on top is OK):
// FIRST, SET THE WAY YOU WANT TO FORMAT DATE
// DETAILS HERE - https://php.net/strftime
$dateformatstring = "%A le %d %B, %Y";
// THEN, CONVERT THE FIELD FROM ACF TO UNIX TIMESTAMP
$unixtimestamp = strtotime(get_field('data_picker'));
// NOW ECHO THE ENGLISH DATE USING PHP'S strftime
echo strftime($dateformatstring, $unixtimestamp);
Thakns.
Updated code here:
<?php setlocale(LC_ALL, array('en_US.UTF8','en_US','english')); ?>
<?php query_posts( array( 'post_type' => 'custom_post_name', 'post_status' => 'publish', 'posts_per_page' => 1 ) ); ?>
<?php if (have_posts()) : while (have_posts()) : the_post(); ?>
<?php if(have_rows('repeater_field_name')): ?>
<?php while( have_rows('repeater_field_name') ): the_row(); ?>
<?php
$dateformatstring = "%A %d %B, %Y";
$unixtimestamp = strtotime(get_sub_field('date_picker'));
echo strftime($dateformatstring, $unixtimestamp);
?>
<?php endwhile; ?>
<?php endif; ?>
<?php endwhile; endif; ?>
But it shows me everywhere “Thursday 01 January, 1970 “, instead of getting from the ACF Date Picker Fields.
Well, you probably changed the default display of the date in ACF field settings. The php function strtotime cannot work with french dates.
Go to ACF field settings for date_picker and set it to YYYYMMDD
The topic ‘ACF Date Picker (date output)’ is closed to new replies.
Welcome to the Advanced Custom Fields community forum.
Browse through ideas, snippets of code, questions and answers between fellow ACF users
Helping others is a great way to earn karma, gain badges and help ACF development!
We use cookies to offer you a better browsing experience, analyze site traffic and personalize content. Read about how we use cookies and how you can control them in our Privacy Policy. If you continue to use this site, you consent to our use of cookies.