【问题标题】:Change date format in echo function在 echo 函数中更改日期格式
【发布时间】:2016-01-02 02:53:12
【问题描述】:

我创建了一个运行良好的查询,我只是对这两个“回显”的日期有疑问:

echo "du : $item->session_du | ";
echo "au : $item->session_au<br /><br />";

Echo 以下列格式显示日期:

2016-01-11 23:00:00

我需要这种格式的输出

隆迪 2016 年 1 月 11 日

我还没有找到解决方法,所以如果有人能建议我如何解决这个问题,我将不胜感激。

查询:

$candidateid = JRequest::getVar('gprh_fabrik_user_enrollment___id');
$db = JFactory::getDbo();
   $query = $db->getQuery(true);
   $query
      ->select (array('gprh_fabrik_user_enrollment.id', 'gprh_fabrik_user_training_124_repeat.nom_formation', 'gprh_fabrik_user_training_124_repeat.intitule_session', 'gprh_fabrik_user_training_124_repeat.session_du', 'gprh_fabrik_user_training_124_repeat.session_au'))   
  ->from('gprh_fabrik_user_enrollment')
  ->leftJoin('gprh_fabrik_user_enrollment_repeat_choix_formation ON gprh_fabrik_user_enrollment.id = gprh_fabrik_user_enrollment_repeat_choix_formation.parent_id')
  ->leftJoin('gprh_fabrik_user_training_124_repeat ON gprh_fabrik_user_enrollment_repeat_choix_formation.choix_formation = gprh_fabrik_user_training_124_repeat.id')
  ->leftJoin('gprh_fabrik_user_training ON gprh_fabrik_user_training_124_repeat.parent_id = gprh_fabrik_user_training.id')
  ->having('gprh_fabrik_user_enrollment.id = ' . $db->quote($candidateid))
  ->group('gprh_fabrik_user_enrollment.id, gprh_fabrik_user_training_124_repeat.nom_formation, gprh_fabrik_user_training_124_repeat.intitule_session, gprh_fabrik_user_training_124_repeat.session_du, gprh_fabrik_user_training_124_repeat.session_au');
   $db->setQuery($query);
   $row = $db->loadObjectList();
   echo "<div style='font-family: arial, helvetica, sans-serif; font-size: 11pt;'><OL>";
   foreach ($row as $item)
   {
       echo "<LI> $item->nom_formation | ";
       echo "$item->intitule_session | ";
       echo "du : $item->session_du | ";
       echo "au : $item->session_au<br /><br />";
       echo "</LI>";
   }
   echo "</OL></div>";

【问题讨论】:

    标签: php sql


    【解决方案1】:

    要将日期翻译成另一种语言,您可以这样做:

    setlocale(LC_TIME, 'fr_FR');
    // with $item->session_du = "2016-01-11 23:00:00"
    print strftime('du : %A %d %B %Y', strtotime($item->session_du));
    

    将输出:

    lundi 11 janvier 2016
    

    strtotime() 采用日期字符串并返回时间戳,strftime() 采用该时间戳并应用格式,返回基于 setlocale() 配置的字符串。

    更多详情,请看这里: http://php.net/manual/en/function.setlocale.php

    【讨论】:

    • 您好 CJ Nimes,感谢您的回复。我知道 strftime 函数我只是不知道如何将它放在我上面的查询代码中。如果你能告诉我怎么做,我会很感激,因为我被卡住了。
    • 只要在脚本开头加上setlocale(),在对应的echos中加上strftime()即可。如果这对您有用,请将答案标记为已接受! :)
    • 我尝试了几种方法将它添加到回显字符串中,但它不起作用。最后的测试是: echo "au : strftime('%A %d %B %Y', strtotime($item->session_du)) | ";如果你知道怎么做,请你教我怎么做是不是太过分了?
    • 不要在函数周围加上引号,它们永远不会被调用。我已经编辑了我的答案,在 strftime 第一个参数中添加了“du:”。希望对您有所帮助!
    【解决方案2】:

    由于您使用的是面向对象的方法,因此您确实应该使用 DateTime 类和 IntlDateFormatter

    您可以对任何日期使用相同的格式化程序,只要它在使用前声明即可。

    $formatter = new IntlDateFormatter('fr_FR', IntlDateFormatter::LONG, IntlDateFormatter::LONG);
    
    $dt = new DateTime($item->session_du);
    echo "du : {$formatter->format($dt)} | ";
    

    【讨论】:

      猜你喜欢
      • 2013-06-16
      • 1970-01-01
      • 1970-01-01
      • 2010-10-12
      • 2013-06-03
      • 2015-03-03
      • 2011-11-18
      • 2022-01-28
      • 2014-10-23
      相关资源
      最近更新 更多