Javascript Moment.js和时区不';我不能只在Android Chrome上工作
我添加了moment.js来管理我的webapp中的时区。我在新西兰(GTM+13)安装了我的设备,并在以下方面运行良好:Javascript Moment.js和时区不';我不能只在Android Chrome上工作,javascript,angularjs,google-chrome,timezone,momentjs,Javascript,Angularjs,Google Chrome,Timezone,Momentjs,我添加了moment.js来管理我的webapp中的时区。我在新西兰(GTM+13)安装了我的设备,并在以下方面运行良好: Iphone:Safari&Chrome 安卓:火狐 OSX:Safari和Chrome 再返回1天(我在GTM+0中)。但是它在Android Chrome上不起作用(我用几个Android设备测试了它),我也不知道为什么。我的代码: var dateFunctions = { "getCurrentDate": function(){ re
- Iphone:Safari&Chrome
- 安卓:火狐
- OSX:Safari和Chrome
var dateFunctions = {
"getCurrentDate": function(){
return moment().valueOf();
},
//I need Date type to use in a custom Calendar component.
"getFormatDate": function(dateLong){
var d = moment(parseInt(dateLong)).toDate();
},
//For jquery calendar. input: Date without local time; output: timestamp
"getDate": function(date){
var currentDay = moment();
var d = moment(date).set("hour",currentDay.get("hour")).set("minute",currentDay.get("minute")).set("second",currentDay.get("second")).set("millisecond",currentDay.get("millisecond"));
return d.valueOf();
},
...
}
。。。
...
我认为这可能与安卓设备的谷歌账户有关。有什么想法吗
编辑:我对其进行编辑以添加更新的代码一些内容:
- 您的
变量名实际上是一个时区标识符,而不是偏移量。没什么大不了的,但可能会引起一些混乱timezoneOffset
- 实际上,这里根本不需要时刻时区。Moment.js可以在本地时区工作,而无需矩时区的帮助
- 不管怎样,当您使用数字时间戳时,时区是不相关的。Unix时间始终基于UTC
- 无需对*/1000使用基于秒的函数。时刻可以帮你解决这个问题
"getCurrentDate": function(){
return moment().valueOf();
},
"getFormatDate": function(dateLong){
return moment(dateLong).toDate();
},
更进一步——因为您只处理数字时间戳和日期对象,所以这里根本没有使用矩的好理由
"getCurrentDate": function(){
return Date.now();
},
"getFormatDate": function(dateLong){
return new Date(dateLong);
},
如果您试图使用当地时间,您需要更清楚地了解如何来回发送数据。你不能用时间戳和保留本地时间。Unix时间戳中没有关于本地时间或时区的信息。webapp是关于预订的,服务器无法检查客户端的时区,因此客户端必须发送正确的日期(如果客户端来自新西兰GTM+13,则需要在第二天发送到服务器)。webapp使用时间戳(它只需要检查日期而不是时间),因此当我将日期转换为另一种格式以显示它或将它发送到服务器时,需要添加时区。我试着用你的代码,你是对的,我不需要时刻时区,谢谢。但是Android Chrome(只有在这种情况下)的问题并没有消失。考虑使用Time<代码>格式>代码>函数,这样你就可以返回一个字符串。ISO8601通常是最好的选择。
"getCurrentDate": function(){
return Date.now();
},
"getFormatDate": function(dateLong){
return new Date(dateLong);
},