2013-08-19 32 views
0

一個第三黨給我提供了一個EDT時間戳的格式如下:轉換EDT時間戳PST與正則表達式/ JavaScript的

MM/DD/YYYY HH:MM

例如:' 2013年8月19日11:31'

我需要它使用JavaScript(相同的日期時間格式)轉換爲PST,並已在尋找所有,但不能找到有關這個產品的信息。如果有人能幫我用一些示例代碼,我真的很感激它。

+0

有很多日期庫都來做到這一點。但是你可以解析字符串:按空格分隔,所以你有日期和時間。然後按「:」分隔時間,並用「/」分隔日期。創建一個新的Date(),並按正確的順序提供正確的值。用適當的方法減去一天,然後重新創建格式。以下是您需要的方法的參考:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date – Ian

+0

對不起,「減去一天」,我的意思是「減3小時「。下面是我的意思的一個例子:http://jsfiddle.net/paHPK/1/ – Ian

+0

如果您將它添加爲答案,這將非常好,我會將其標記爲正確!謝謝 – codelove

回答

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

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

padZero功能是有隻是前面加上任何0 S IN的情況下的數量小於10。

參考:

相關問題