有人知道是否可以禁用将日期/时间选择器自动将UTC时间添加到日期对象的功能吗?正如您在下图中看到的那样,它会自动将我的日期对象调整为UTC。我希望我的日期对象在10:00:00提交
{"reportedDate": "2019-02-13T15:00:16.000Z"}
<p-calendar required [(ngModel)]="entry.reportedDate" name="reportedDate" #reportedDate="ngModel" [showIcon]="true" [showTime]="true" dateFormat="mm/dd/y 'EST'" hourFormat="24"></p-calendar>
答案 0 :(得分:1)
根据the documentation page for this component(在属性表中):
Name Type Default Description ----------------------------------------------------------------------------- dataType string date Type of the value to write back to ngModel, default is date and alternative is string.
您应该通过[dataType]="string"
。这将阻止构造Date
对象,进而阻止任何时区转换。
此外,我建议不在条目格式中添加时区缩写。请记住,夏令时可能会根据选择的日期而生效,并且并非每个时区都有清晰一致的缩写,并且某些缩写(例如CST或IST)含糊。
如果您需要向用户指示该条目是美国东部时间,则将其放在文本框之外。如果必须使用缩写,请使用ET
作为通用形式。
答案 1 :(得分:0)
使用偏移量将日期设置为所需的时区。
*编辑 错误的例子(不要这样做):
var dt = new Date(1458619200000);
console.log(dt); // Gives Tue Mar 22 2016 09:30:00 GMT+0530 (IST)
dt.setTime(dt.getTime()+dt.getTimezoneOffset()*60*1000);
console.log(dt); // Gives Tue Mar 22 2016 04:00:00 GMT+0530 (IST)
var offset = -300; //Timezone offset for EST in minutes.
var estDate = new Date(dt.getTime() + offset*60*1000);
console.log(estDate); //Gives Mon Mar 21 2016 23:00:00 GMT+0530 (IST)
根据经验: 我不知道你怎么存储这个日期。当您谈论时区时,事情很快就会变得复杂。稍后,当您希望支持显示不同的时区时。然后,您将必须在客户端设备上从东部转移到中央。您数据库中的所有条目均为东部时间,后端需要进行转换。现在,您的服务器托管在不同的TimeZone中,并且在每个服务调用中都需要自定义逻辑(噩梦!!!)
现在帮自己一个忙,并将所有内容保存在UTC中。