2

我多次尝试将 utc 日期时间转换为本地日期时间,但都失败了。我的UTC日期时间格式是

2013 年 3 月 8 日星期五 23:12:27 UTC+0200

我的 JavaScript 代码也是

var time = Date(param_time);//param_time is /Date(1362866006646)/

然后时间是Sun Mar 10 00:21:54 UTC+0200 2013我需要将日期时间设置为2008-01-28T20:24:17Z因为我会将本地日期时间转换为漂亮的日期时间。

http://ejohn.org/files/pretty.js

我怎样才能做到这一点 ?我看了很多关于stackoverflow的问题,但没有人能用。谢谢你。

4

4 回答 4

6

为了Date正确格式化您的使用toISOString()

var time = param_time.toISOString();

请注意,它param_time必须是一个有效的Date对象。

参考

于 2013-03-09T22:35:58.037 回答
1

我很少使用 javascript,所有这些日期时间转换对我来说也很神秘,javascript 是一种客户端技术,所有这些“UTC”短语都没有任何意义(至少对我而言),因为所有类型的getUTC...()/setUTC...()函数都在本地时间工作,所有Date.to...String()函数也是如此,即使new Date()(由于文档的原因)会在 UTC 中初始化,也给出本地时间。

但是,如果您有一个(正确的)UTC 日期并希望将其转换为当前(客户端)本地时间,那么您需要getTimezoneOffset()或很快:

function UTCToLocalTime(d) {
    var timeOffset = -((new Date()).getTimezoneOffset()/60);
    d.setHours(d.getHours() + timeOffset);
    return d;
}

var time = new Date(Date.parse('Fri Mar 8 23:12:27 UTC+0200 2013'));
alert(UTCToLocalTime(time)); // Sat Mar 9 01:12:27 UTC+0200 2013

//p.s. or...
function UTCToLocalTime2(d)
{
  return new Date(d.toString().replace(/UTC.*/g,"") + d.getYear());
}
于 2013-03-10T01:12:59.283 回答
1
  var timezone = "UTC+01:30";
  var start = new Date();
  if(timezone != "UTC"){
      timezone = timezone.replace(/UTC/g,"");
      znak = timezone.charAt(0);
      timezone = timezone.replace(/[+|-]/g,"");
      timezone = timezone.split(":");
      //var start = new Date(start.toString() + " " + timezone);e.
      //alert(start.toString());
      if(znak == "+") start = new Date(start.getTime() + (timezone[0]*60*60000 + timezone[1] * 60000)   );
      if(znak == "-") start = new Date(start.getTime() - (timezone[0]*60*60000 + timezone[1] * 60000)   );
  }
  var hours = start.getUTCHours();
  var minutes = start.getUTCMinutes();
  var seconds = start.getUTCSeconds();
于 2014-07-05T21:21:24.557 回答
0
var day = 10;
var month = 04;
var year = 2015;

var dateUtc = Date.UTC(year, month - 1, day + 1, 0, 0, 0);
> 1428710400000

var toDate = new Date(dateUtc);
> Fri Apr 10 2015 21:00:00 GMT-0300 (Hora oficial do Brasil)
于 2015-07-24T14:24:51.950 回答