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

use*_*979 5 javascript datetime iso8601 momentjs

这是我的 ISO 格式的日期。在这里我想通过 JavaScript 获取像“11:00”这样的时间。我用了这个方法:

new Date(Mydate).toLocaleString();
Run Code Online (Sandbox Code Playgroud)

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

var Mydate = "2012-10-16T11:00:28.556094Z";
Run Code Online (Sandbox Code Playgroud)

输出将是“11:00”

Mat*_*int 8

现代方法,使用 Node.js 和大多数现代浏览器内置的 ECMAScript 国际化 API:

const myDate = "2012-10-16T11:00:28.556094Z";
const time = new Date(myDate).toLocaleTimeString('en',
                 { timeStyle: 'short', hour12: false, timeZone: 'UTC' });

// Output:  "11:00"
Run Code Online (Sandbox Code Playgroud)

较旧的方法,使用moment.js

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

// Output:  "11:00"
Run Code Online (Sandbox Code Playgroud)


Ron*_*Dex 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;
}
Run Code Online (Sandbox Code Playgroud)