我正在创建日期对象作为新日期。
但是它在我的时区创建了日期对象,但是当我通过帖子请求发送它时,它会自动转换为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对象,并且因为转换而不会有任何数据丢失。
答案 0 :(得分:1)
toUTCString()
方法使用UTC时区将日期转换为字符串。
答案 1 :(得分:0)
您可以通过将时区偏移量添加到new Date()
d = new Date();
localTime = d.getTime();
localOffset = d.getTimezoneOffset() * 60000;
utc = localTime + localOffset;
其他选项是使用moment.js库来获取时间。
答案 2 :(得分:0)
使用此方法。传递您的日期对象,它将根据您的要求返回日期。
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;
}
答案 3 :(得分:0)
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);
答案 4 :(得分:0)
我认为您应该在服务器上以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
更多关于moment.js的例子,你可以找到here