2013-07-06 113 views
1

解析日期和時間,我有以下格式的日期:從格式化的日期

Wed Jul 17 2013 13:00:00 GMT-0700 (PDT) 

誰能告訴我如何解析日期

Wed Jul 17 2013 

和超時的這種不使用字符串功能

1:00pm 
+1

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/parse請訪問以下鏈接希望這對你有幫助 –

+0

看起來像一個日期對象的toString輸出。你能訪問對象本身嗎?你從哪裏得到這個輸入?你試過什麼了? – user1555863

+1

_「不使用字符串函數」_ - 爲什麼?這不就是「解析」的全部內容嗎?特別是當日期已經完全符合你所需要的格式時,只需稍作調整就可以切換到am/pm格式。 (要做到這一點_without_ string功能,你必須將它轉換爲'日期',然後拿出個別部分,並將它們組裝成你想要的格式......) – nnnnnn

回答

1

最簡單的方法之一是確保您的LOCALES設置正確,這可以讓您做這樣的事情:

var myStrDate = 'Wed Jul 17 2013 13:00:00 GMT-0700 (PDT)'; 
var myDate = Date.parse(myStrDate); 
var myDateOnly = myDate.toLocaleDateString(); 
var myTimeOnly = myDate.toLocaleTimeString(); 

這裏是一個偉大的地方開始:http://www.w3schools.com/jsref/jsref_obj_date.asp

+0

字符串沒有'.parse( )'方法... – nnnnnn

+0

你是對的 - 我已經修復了代碼中的那一行。 – DevlshOne

1

您可以構建一個Date對象的日期字符串,附加功能相結合,以獲得所需的輸出。 dayname()返回日期名稱,monthname()返回三個字母的月份名稱。

我用console.info()輸出結果 - alert()可以作爲替代品,如果適用。

function dayname(d) 
{ 
    var names = [ "Sun", "Mon", "Tue", "Wed", "Thu", "Fri","Sat" ]; 
    return names[d.getDay()]; 
} 
function monthname(d) 
{ 
    var names = ["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"]; 
    return names[d.getMonth()]; 
} 

// construct new date object passing date string as parameter 
var d = new Date("Wed Jul 17 2013 13:00:00 GMT-0700 (PDT)"); 
console.info(dayname(d) + ' ' + monthname(d) + ' ' + d.getDate() + ' ' + d.getFullYear()); 

對於時間,這gettime()函數正確檢查小時,輸出AM或PM,並正確formatting-:

function gettime(d) 
{ 
    var ampm = "am"; 
    var hour = d.getHours(); 
    var mins = d.getMinutes(); 
    if (hour >= 12) 
    { 
     hour = hour - 12; 
     ampm = "pm"; 
    } 
    if (hours < 10) 
     hours = "0" + hours; 
    if (mins < 10) 
     mins = "0" + mins; 
    return hour + ":" + mins + ampm; 
} 
console.info(gettime(d)); 
+0

但是這格式化當前日期。 OP表示他們已經有特定日期的特定格式... – nnnnnn

+0

已更新。日期對象現在使用日期字符串創建。 – suspectus

1
var ms = Date.parse(new Date("Wed Jul 17 2013 13:00:00 GMT-0700 (PDT)")); 
var curr_date = ms.getDate(); 
var curr_month = ms.getMonth() + 1; //Months are zero based 
var curr_year = ms.getFullYear(); 
var hours = ms.getHours(); 
var mins = ms.getMinutes(); 
suf = (hours >= 12)? 'pm' : 'am'; 
hours = hours % 12; 
document.write(curr_date + "-" + curr_month + "-" + curr_year + " " + hours + ":" + min + " " + suffix); 

同時嘗試使用moment.js,可以格式化dateTime如你所願。