使用regex / JavaScript将EDT时间戳转换为PST

时间:2013-08-19 16:15:56

标签: javascript regex timestamp

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

MM / DD / YYYY hh:mm

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

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

1 个答案:

答案 0 :(得分:1)

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

  1. 按空格分割,因此您有日期和时间。
  2. 将时间分成":"并按" /"。
  3. 分割日期
  4. 创建new Date()并按正确的顺序提供正确的值。
  5. 使用适当的方法减去3小时,然后重新创建格式。
  6. 以下是所有这些的一个例子:

    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;
    }
    

    DEMO: http://jsfiddle.net/MmVmR/

    padZero函数只是为了在数字小于10的情况下添加任何0

    参考: