【问题标题】:jQuery Datepicker - How can I format the date as an epoch timestamp (in seconds NOT milliseconds)jQuery Datepicker - 如何将日期格式化为纪元时间戳(以秒为单位而不是毫秒)
【发布时间】:2011-01-20 06:05:43
【问题描述】:

我正在使用 jquery datepicker 插件来设置一个日期字段,该字段作为纪元时间戳存储在数据库中(该字段,publish_time,直接映射到表架构)。

似乎 Datepicker 只支持以毫秒为单位的纪元,而不是秒。更糟糕的是它支持毫秒和纳秒,但不支持秒。

有什么快速的解决方法吗?

// Setup datepicker
$('[name=datepicker-publish_time]').datepicker({
    dateFormat : 'mm-dd-yy',
    altField : '[name=publish_time]',
     altFormat : '@'
});

参考:
jQuery 日期选择器 - http://jqueryui.com/demos/datepicker/#option-defaultDate
jQuery 支持日期格式 - http://docs.jquery.com/UI/Datepicker/formatDate

编辑:下面是一个快速肮脏的解决方案...

$('[name=datepicker-publish_time]').datepicker({
    dateFormat : 'mm-dd-yy',
    onSelect : function(dateText, inst)
    {
        var epoch = $.datepicker.formatDate('@', $(this).datepicker('getDate')) / 1000;

        $('[name=publish_time]').val(epoch);
    }
});

【问题讨论】:

  • 我遇到了完全相同的问题...感谢您发布您的解决方案。 +1

标签: jquery datepicker epoch


【解决方案1】:

我输入这个作为答案而不是评论,所以它不会被遗漏:我强烈警告不要使用来自您的客户的原始时间戳作为值来填充到您的数据库中,除非您真的确定这就是你想要做的。您的客户可能与您的服务器位于不同的时区(事实上,一般来说,他们有大约 96% 的机会是 :-) 所以当他们选择“4 月 2 日”时,它可能会或可能不会以“4 月 2 日”结束数据库。

当然,有时您想要客户时间,但根据我的经验,这并不常见。

【讨论】:

  • 我遇到了与 OP 类似的问题,因为我需要将用户记录的日期与 datepicker 与当前服务器时间进行比较......而不是保存 tadepicker 返回的毫秒值,因为我还想记录一个日期字符串(DD d mm yy),然后我使用 jquery ajax 将该字符串发送到 php 脚本,该脚本将其呈现为 unix 时间戳服务器端并返回
【解决方案2】:

使用毫秒表示和 parseInt 获取整数值。然后你可以乘以 1000 得到秒数。这只需要一点处理,而不是直接获取日期选择器的值。

【讨论】:

  • 我将不得不这样做作为最后的选择。我需要编写一个自定义回调,我并不反对这样做,但我希望有一个可以在 dateFormat 中使用的表达式(例如,'(@/1000)')
猜你喜欢
  • 2014-03-14
  • 1970-01-01
  • 2013-05-14
  • 1970-01-01
  • 1970-01-01
  • 2019-02-24
  • 1970-01-01
  • 2022-11-27
  • 2017-05-28
相关资源
最近更新 更多