【问题标题】:strtotime with datetimepickerstrtotime 与 datetimepicker
【发布时间】:2015-05-28 00:39:11
【问题描述】:

我正在使用 datetimepicker jquery 插件并有以下代码来显示它:

var dateToday = new Date();
$('#post_date_picker').datetimepicker({
    minDate: dateToday,
    timeFormat: 'hh:mm p z',
    timezoneList: [ 
        { value: -300, label: 'Eastern'}, 
        { value: -360, label: 'Central' }, 
        { value: -420, label: 'Mountain' }, 
        { value: -480, label: 'Pacific' } 
    ]
});

由于我以 12 小时格式而不是 24 小时格式显示它,并且如果服务器时间已经是 PM,则使用最小日期,我可以选择时间并像 05/27/2015 08:50 p -0500 一样输出它

然后我执行以下代码来准备将日期插入数据库:

$date_time = strtotime($_POST['post_date']);
$post_date = date('Y-m-d H:i:s', $date_time);

问题是 strtotime 没有为 PM 重新配置 p 并且基本上在 12 小时前插入了日期。我该怎么做?

【问题讨论】:

  • 尝试将p 更改为A。我怀疑这会使该值对 PHP 有效
  • @JohnConde 我试过这个但得到了相同的结果。
  • 尝试去掉 z,因为它不需要代码。

标签: php jquery date strtotime


【解决方案1】:

设置时间格式:'hh:mm tt z'

在 php 中使用 date_create & date_format ($date_time,'Y-m-d h:i:sA')

查看(strtotime / date_create)之间的区别。

// method using date_create

//$date=$_POST['post_date'];

$date='05/27/2015 08:50 p -0500';

$date_time=date_create($date);

$post_date=date_format($date_time,'Y-m-d H:i:s'); 

echo $post_date."<br>";//outputs 2015-05-27 08:50:00


//method using strtotime

$date_time = strtotime($date);

$post_date = date('Y-m-d H:i:s', $date_time);

echo $post_date;//outputs 2015-05-27 13:50:00

strtotime 可以采用许多字符串参数,可能是当您将日期传递为 '05/27/2015 08:50 p -0500' 时,会发生一些冲突,从而导致对时间的错误解释。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-09-02
    • 2011-12-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多