Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/29.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在JAVASCRIPT中用UTC创建日期对象_Javascript_Angular - Fatal编程技术网

在JAVASCRIPT中用UTC创建日期对象

在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

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

但它正在我的时区中创建日期对象,但当我通过post请求发送它时,它会自动转换为UTC格式,并且一些数据会丢失

仅当我向服务器发送请求时,我希望以UTC格式创建日期对象

是否有创建utc日期对象的javascript函数

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