在JAVASCRIPT中用UTC创建日期对象
我正在创建日期对象作为新日期 但它正在我的时区中创建日期对象,但当我通过post请求发送它时,它会自动转换为UTC格式,并且一些数据会丢失 仅当我向服务器发送请求时,我希望以UTC格式创建日期对象 是否有创建utc日期对象的javascript函数在JAVASCRIPT中用UTC创建日期对象,javascript,angular,Javascript,Angular,我正在创建日期对象作为新日期 但它正在我的时区中创建日期对象,但当我通过post请求发送它时,它会自动转换为UTC格式,并且一些数据会丢失 仅当我向服务器发送请求时,我希望以UTC格式创建日期对象 是否有创建utc日期对象的javascript函数 var date =new Date() 我现在这样使用,我的对象值是 Sun Apr 01 2018 00:00:00 GMT+0530 (India Standard Time) 当我将数据发送到服务器时,它将作为 2018-03-31T18
var date =new Date()
我现在这样使用,我的对象值是
Sun Apr 01 2018 00:00:00 GMT+0530 (India Standard Time)
当我将数据发送到服务器时,它将作为
2018-03-31T18:30:00.000Z
是否有任何方法可以只创建UTC对象,并且不会因为转换而丢失任何数据。该方法使用UTC时区将日期转换为字符串。您可以通过将时区偏移量添加到从
新日期()获得的时间来手动执行此操作。
请在此详细描述
另一个选项是使用moment.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;
}
我认为您应该在serwer上以UTC格式保存数据,并在客户端应用程序中按当前用户位置格式化此日期 为什么??如果您在数据库中保存了包含时区的日期,例如
Sun Apr 01 2018 00:00:00 GMT+0530(印度标准时间)
,则将此日期转换为其他时区会有问题
在前面,您可以使用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的示例,您可以发现不确定您在做什么,但我认为这不是以不同的方式创建正确的对象,而是以正确的方式序列化对象?考虑过了吗?我不明白这个问题。唯一丢失的数据是日期是在IST时区中创建的……如果您从一开始就创建了UTC对象,那么这些数据将不会是首先出现的数据<代码>2018-03-31T18:30:00.000Z是UTC日期字符串。
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);
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