我正在创建日期对象作为新日期。
但它正在我的时区创建日期对象,但是当我通过 post 请求发送它时,它会自动转换为 UTC 格式,并且一些数据会丢失。
我想仅在发送请求时以 UTC 格式创建日期对象,相同的日期应该转到服务器。
是否有任何JavaScript函数来创建UTC日期对象
var date =new Date()
我现在像这样使用,我的对象值是
Sun Apr 01 2018 00:00:00 GMT+0530 (India Standard Time)
当我将数据发送到服务器时,它被发送为
2018-03-31T18:30:00.000Z
有什么办法可以只创建UTC对象,并且不会因为转换而丢失任何数据。
toUTCString()
方法使用 UTC 时区将日期转换为字符串。
将时区偏移量添加到从new Date()
获得的时间来手动执行此操作
d = new Date();
localTime = d.getTime();
localOffset = d.getTimezoneOffset() * 60000;
utc = localTime + localOffset;
在此处详细描述 https://www.techrepublic.com/article/convert-the-local-time-to-another-time-zone-with-this-javascript/
另一种选择是利用时刻.js库来获取时间。
var y = date.getUTCFullYear();
var m = date.getUTCMonth();
var d = date.getUTCDate();
var h = date.getUTCHours();
var M = date.getUTCMinutes();
var s = date.getUTCSeconds();
var utc = Date.UTC(y,m,d,h,M,s);
我认为您应该在 serwer 上以 UTC 格式保存数据,并按当前用户位置在客户端应用程序中格式化此日期。
为什么?例如,如果您在数据库中保存日期(包括时区(,Sun Apr 01 2018 00:00:00 GMT+0530 (India Standard Time)
则将此日期转换为其他时区将有问题。
在前面,您可以使用moment.js进行转换:
var jun = moment("2014-06-01T12:00:00Z");
var dec = moment("2014-12-01T12:00:00Z");
jun.tz('America/Los_Angeles').format('ha z'); // 5am PDT
dec.tz('America/Los_Angeles').format('ha z'); // 4am PST
jun.tz('America/New_York').format('ha z'); // 8am EDT
dec.tz('America/New_York').format('ha z'); // 7am EST
jun.tz('Asia/Tokyo').format('ha z'); // 9pm JST
dec.tz('Asia/Tokyo').format('ha z'); // 9pm JST
jun.tz('Australia/Sydney').format('ha z'); // 10pm EST
dec.tz('Australia/Sydney').format('ha z'); // 11pm EST
更多示例.js您可以在此处找到
使用此方法。传递您的日期对象,它将根据您的要求返回日期。
function meetingDate(ExpiryDate){
var objDate,
mSeconds,
day,
month,
year;
day = ExpiryDate.substring(0, 2) - 0;
month = ExpiryDate.substring(3, 5) - 1;
year = ExpiryDate.substring(6, 10) - 0;
mSeconds = (new Date(year, month, day)).getTime();
objDate = new Date();
objDate.setTime(mSeconds);
return objDate;
}