我使用jQuery日期选择器添加日期选择器并使用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
这是以毫秒为单位的,所以i id do /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));
我得到了正确的时间戳。
使用datepicker的示例: 29-08-2011 --> 1314568800。
勾号(!)也是如此。在日期选择器中。
发布于 2012-10-24 20:42:46
这显然是一个时区问题。
getTime()
此函数返回从'epoch‘开始的毫秒数,这意味着从本地计算机上看到的是Unix timestamp * 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
发布于 2011-08-29 21:56:40
很可能是.NET不知道它是什么时区。你必须定义这一点。
发布于 2013-09-30 22:41:52
对于您的代码,您必须执行以下操作:
private static DateTime ConvertFromUnixTimestamp(double timestamp)
{
var origin = new DateTime(1970, 1, 1, 0, 0, 0, 0);
return origin.AddSeconds(timestamp - origin.getTime());
}
这是因为在大多数时区中,1月1日对应于大于0或1的unixtime值。因此,更准确地说,您必须设置(而不是添加) Datetime
对象的时间戳(如果您有设置器的话)。
https://stackoverflow.com/questions/7230954
复制相似问题