我使用 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/