我在处理Timzones和在DatePickers中选择的日期时遇到了非常艰难的时期。而我正在讨论的情况是我们对时间成分不感兴趣(想想出生日期)。
大多数DatePickers都遇到了同样的问题。 Javascript Date对象“备份”它们。即使你的日期是以UTC为管道,Javascript日期也是“区域”,基于加载网站的浏览器。
事实是,出生日期并不关心时区。这是不变的。因此,当用户选择出生日期并且前一天实际发送到服务器时,这是非常令人反感的。我差点把婴儿和洗澡水扔出去,用文字输入字符串。这是防弹。
我离题了。我在几个地方看到的一个解决方案(对我们来说无法可靠地工作)就像这样的代码persons[i].BirthDate = persons[i].BirthDate.replace(/\d+/,
function (n) { return parseInt(n) + new Date().getTimezoneOffset() * 60000; }
我很好奇。为什么60000?
我也见过这个:
//Deal with dates in milliseconds for most accuracy
utc = d.getTime() + (d.getTimezoneOffset() * 60000);
newDateWithOffset = new Date(utc + (3600000*offset));
其中offset类似于'+10'。什么是3600000?
我想知道在将它们投入生产之前这些事情是做什么的。也许他们没有为我们工作的原因是因为我们没有正确地理解它们并且没有在其他地方做出相应的补偿,例如服务器。
感谢。
答案 0 :(得分:1)
getTime以毫秒为单位提供时间,getTimezoneOffset以分钟为单位提供时间。因此,一分钟是60秒或60.000毫秒 3.600.000 ms = 3.600 s = 60 min = 1 h因此,offest以小时为单位进行测量。