如何在javascript中从ISO 8601时间格式中获取时间?

时间:2013-12-11 11:57:24

标签: javascript angularjs datetime momentjs iso8601

这是我的ISO格式化日期。在这里,我希望通过javascript获得像“11:00”这样的时间。 我用过这种方法。

new Date(Mydate).toLocaleString();

但它给了时间“16:30”。在javascript中有没有任何格式或方法可以做到这一点?我怎样才能获得该时区的时间。

var Mydate = "2012-10-16T11:00:28.556094Z";

输出将是“11:00”

5 个答案:

答案 0 :(得分:2)

使用此:

var date = new Date(Mydate);
var time = ConvertNumberToTwoDigitString(date.getUTCHours()) + 
           ":" + ConvertNumberToTwoDigitString(date.getUTCMinutes());

// Returns the given integer as a string and with 2 digits
// For example: 7 --> "07"
function ConvertNumberToTwoDigitString(n) {
    return n > 9 ? "" + n : "0" + n;
}

答案 1 :(得分:0)

使用moment.js

var myDate = "2012-10-16T11:00:28.556094Z";
var time = moment.utc(myDate).format("HH:mm");

答案 2 :(得分:0)

试试这个,我忘了我得到的地方:

// --- Date ---
// convert ISO 8601 date string to normal JS Date object
// usage: (new Date()).setISO8601( "ISO8601 Time" )

Date.prototype.setISO8601 = function(string) {
  var d, date, offset, regexp, time;
  regexp = "([0-9]{4})(-([0-9]{2})(-([0-9]{2})" + 
           "(T([0-9]{2}):([0-9]{2})(:([0-9]{2})(\.([0-9]+))?)?" + 
           "(Z|(([-+])([0-9]{2}):([0-9]{2})))?)?)?)?";
  d      = string.match(new RegExp(regexp));
  offset = 0;
  date   = new Date(d[1], 0, 1);
  if (d[3])  date.setMonth(d[3] - 1);
  if (d[5])  date.setDate(d[5]);
  if (d[7])  date.setHours(d[7]);
  if (d[8])  date.setMinutes(d[8]);
  if (d[10]) date.setSeconds(d[10]);
  if (d[12]) date.setMilliseconds(Number("0." + d[12]) * 1000);
  if (d[14]) {
    offset = (Number(d[16]) * 60) + Number(d[17]);
    offset *= (d[15] === '-' ? 1 : -1);
  }
  offset -= date.getTimezoneOffset();
  time = Number(date) + (offset * 60 * 1000);
  return this.setTime(Number(time));
};

答案 3 :(得分:0)

尝试从ISO日期开始获取时间。

let Mydate = '2012-10-16T11:00:28.556094Z';
let result = Mydate .match(/\d\d:\d\d/);
console.log(result[0]);

输出将是

11:00

答案 4 :(得分:0)

这个答案在 00:34 的任何时候都失败了,因为它已更改为 24:34

const time = new Date(myDate).toLocaleTimeString('en',
                 { timeStyle: 'short', hour12: false, timeZone: 'UTC' });

这似乎是一个更好的解决方案,至少对我来说是这样。

new Date(value).toLocaleTimeString([], { hour: '2-digit', minute: '2-digit' });

来源: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toLocaleTimeString