在JAVASCRIPT中以UTC格式创建Date对象

时间:2018-04-09 09:17:37

标签: javascript angular

我正在创建日期对象作为新日期。

但是它在我的时区创建了日期对象,但是当我通过帖子请求发送它时,它会自动转换为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对象,并且因为转换而不会有任何数据丢失。

5 个答案:

答案 0 :(得分:1)

toUTCString()方法使用UTC时区将日期转换为字符串。

答案 1 :(得分:0)

您可以通过将时区偏移量添加到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/

其他选项是使用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