0

第三方向我提供了以下格式的 EDT 时间戳:

MM/DD/YYYY hh:mm

例如:'08/19/2013 11:31'

我需要使用 JavaScript(相同的日期时间格式)将其转换为 PST,并且一直在寻找,但找不到任何关于这样做的信息。如果有人可以帮助我提供一些示例代码,我将非常感激。

4

1 回答 1

1

如果您想手动执行此操作,可以尝试以下操作:

  1. 用空格分割,所以你有日期和时间。
  2. 用“:”分割时间,用“/”分割日期。
  3. 创建一个new Date()并以正确的顺序提供正确的值。
  4. 使用适当的方法减去 3 小时,然后重新创建格式。

这是所有这一切的一个例子:

var est = "01/01/2014 02:31",
    finalDate, pst;

finalDate = parseDateString(est);
finalDate.setHours(finalDate.getHours() - 3);
pst = formatDate(finalDate);

console.log(pst);

function parseDateString(str) {
    var dateTime, date, time, dateSplit, month, day, year, timeSplit, hour, minute;

    dateTime = est.split(" ");
    date = dateTime[0];
    time = dateTime[1];

    dateSplit = date.split("/");
    month = dateSplit[0] - 1;
    day = dateSplit[1];
    year = dateSplit[2];

    timeSplit = time.split(":");
    hour = timeSplit[0];
    minute = timeSplit[1];

    return new Date(year, month, day, hour, minute);
}

function formatDate(d) {
    return padZero(d.getMonth() + 1) + "/" + padZero(d.getDate()) + "/" + d.getFullYear() + " " + padZero(d.getHours()) + ":" + padZero(d.getMinutes());
}

function padZero(num) {
    if (+num < 10) {
        num = "0" + num;
    }
    return "" + num;
}

演示:http: //jsfiddle.net/MmVmR/

如果数字小于 10,该padZero函数只是在前面添加任何s。0

参考:

于 2013-08-19T17:54:57.420 回答