javascript - jQuery Datepicker unix 时间戳

标签 javascript jquery datepicker

我使用 jQuery datepicker 添加一个 datepicker 并使用 altFormat '@' --> 请参阅 http://docs.jquery.com/UI/Datepicker/formatDate

 // Function datepicker
        $("#obsDate").datepicker({
            altField: '#actualDate',
            altFormat: '@',        // Gives a timestamp dateformat
            dateFormat: "dd-mm-yy",
            showOn: "button",
            buttonImage: $("#datePickerImg").val(),
            buttonImageOnly: true,
        });

当用户选择一个值时,就会设置 unix 时间戳。 喜欢:1312840800000

这是以毫秒为单位,所以我 id 为/1000

但是当我用C#中的函数转换时间戳时

private static DateTime ConvertFromUnixTimestamp(double timestamp)
        {
            var origin = new DateTime(1970, 1, 1, 0, 0, 0, 0);
            return origin.AddSeconds(timestamp);
        }

我总是提前一天..

我做错了什么?

更新: 当我使用 javascript gettime() 的内置函数时

var ts = Math.round((new Date().getTime() / 1000));

我得到了正确的时间戳...

  • 以 getTime() 为例,我得到: 2011-08-30 --> 1314628036

我得到的日期选择器的示例: 2011年8月29日 --> 1314568800。

这也在日期选择器中带有勾号(!)。

最佳答案

这显然时区问题。

getTime()
此函数返回自“纪元”以来的毫秒数,这意味着您将获得从本地计算机看到的 Unix 时间戳 * 1000。 请参阅If javascript “(new Date()).getTime()” is run from 2 different Timezones .

datepicker({altFormat: '@'})
从我在 jQuery 库中看到的,datepicker 内部使用 formatDate 函数,该函数考虑了时区 (我从这里开始:jQuery.datepicker.formatDate and timezone offset ...)

所以,在我的电脑上,我得到了 2 小时的差异。 我想不出一个简单的方法来解决这个问题,但你可以尝试以下方法: datetimepicker getDate to return Date / Time in UTC format

关于javascript - jQuery Datepicker unix 时间戳,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7230954/

相关文章:

javascript - 如何从 ASP.NET MVC View 包含 Add'l .js? (.aspx)

javascript - 根据数据属性搜索html元素

javascript - 将 DatePicker 添加到模态时出现问题 - 在背景中显示

javascript - 如何将 jQuery 动画反转回原始 CSS 属性

javascript - 如何从异步调用返回响应?

datepicker - NSInvalidArgumentException',原因: '-[UITableViewWrapperView indexPathForCell:]

jquery ui datepicker字体大小很大

javascript - 如何根据 JavaScript 中基于字符串的表达式返回 true 或 false?

javascript - 使用 ajaxified 内容 (jQuery)

javascript - AngularJS 指令 templateUrl 不更新