2012-01-10 45 views
4

我有一個接收一個字符串以毫秒爲單位的參數裏面,像這樣的jQuery腳本:jQuery的格式時間

params.tweetDate='77771564221'; 

我需要做的是創造一個jQuery的功能,將能夠格式化這個毫秒字符串在美國時間,如10.00 AM10.00 PM

有沒有能夠做到這一點的jQuery功能?

請幫忙。

謝謝

+0

是什麼tweetDate代表什麼?是自午夜或自1969年以來的毫秒(我認爲這是日期將從毫秒開始計算的地方)? – redmoon7777 2012-01-10 10:01:03

+0

@ redmoon7777:自紀元(1970年1月1日午夜格林威治標準時)開始,正常值爲秒或毫秒。我在回答中注意到,以上看起來都不是,因爲大紀元給我們1972年6月的一個日期(早在Twitter之前)使用它爲毫秒,並且使用它作爲自大紀元給我們在4434年6月的日期以來的秒數。 :-)所以第一件事的確是要找出那個價值代表什麼。 – 2012-01-10 10:08:51

回答

8

有純JavaScript的Date對象,不需要jQuery。 http://www.javascriptkit.com/jsref/date.shtml

實施例:

var time = new Date(params.tweetDate), 
h = time.getHours(), // 0-24 format 
m = time.getMinutes(); 
// next just convert to AM/PM format (check if h > 12) 
+0

請你舉個例子嗎? – 2012-01-10 09:57:13

+0

增加了一些代碼。我敢肯定,你可以完成它。 – YuS 2012-01-10 10:09:00

+0

Yuri:*「(檢查h> 12)」*不,它是'h> = 12'(12是中午12點,0是上午12點)。 – 2012-01-10 11:33:58

1

timeago看一看:這正是用於此目的的jquery插件。

+0

我不太瞭解它。您能否提供一個如何使用毫秒字符串的示例? – 2012-01-10 09:58:20

+0

這顯示了兩次... – 472084 2012-01-10 09:58:41

+0

+1之間的差異,但是這似乎更多地使用「之前」樣式,而不是按照OP所要求的美式時間格式進行格式設置。 – 2012-01-10 10:04:19

3

不,這裏沒有jQuery功能。您可以使用

  • 的JavaScript自己Date對象,使用getHours()getMinutes()功能,你自己處理AM/PM的東西(例如,小時> = 12點),擁有國內領先的0填充走出分鐘,如果分鐘小於10等。另請注意,如果小時數爲0,則要將其設置爲12(因爲使用AM/PM樣式時,您將午夜編寫爲「12:00 AM」,而不是「0:00 AM」)。
  • DateJS,一個附加庫,做了巨大的日期東西量(雖然遺憾的是它沒有積極維護)
  • PrettyDate約翰Resig的(jQuery的創造者)

只使用任何那些,首先你必須把那個「毫秒」的值變成一個Date對象。如果它真的是「毫秒」值,那麼首先通過parseInt(str, 10)將字符串解析爲數字,然後使用new Date(num)創建表示該時間點的對象。所以:

var dt = new Date (parseInt(params.tweetDate, 10)); 

然而,你說你引述的價值,是一個毫秒值,似乎有點奇怪  —通常是毫秒,因爲大紀元(1970年1月1日),這是JavaScript使用,但new Date(parseInt("77771564221", 10))早在1972年6月就給我們提供了一個日期,早在Twitter之前。它不是自從Epoch(一個相當常見的Unix約定),因爲new Date(parseInt("77771564221", 10) * 1000)給了我們一個日期在4434年6月。因此,首先要找出的是實際表示的值,從以來的毫秒數。然後調整它,使它從The Epoch開始的毫秒數,並將其送入new Date()以獲取對象。

+0

這對我的毫秒字符串是如何工作的?我有點困惑。 – 2012-01-10 09:58:54

+0

@DiegoP:啊,對不起,把它留下。更新。不過,你所引用的價值有點奇怪。 – 2012-01-10 10:03:23

1

使用T.J.的解決方案,這是我最終。

var date = new Date(parseInt("77771564221", 10)); 
var result = new Array(); 
result[0] = $.datepicker.formatDate('DD, M, d, yy', date); 
result[1] = ' '; 
if (date.getHours() > 12) { 
    result[2] = date.getHours() - 12; 
} else if (date.getHours() == 0) { 
    result[2] = "12"; 
} else { 
    result[2] = date.getHours(); 
} 
result[3] = ":" 
result[4] = date.getMinutes(); 

if (date.getHours() > 12) { 
    result[5] = " pm"; 
} else { 
    result[5] = " am"; 
} 

console.log(result.join('')); 
2

這是給你的函數:

function timeFormatter(dateTime){ 
var date = new Date(dateTime); 
if (date.getHours()>=12){ 
    var hour = parseInt(date.getHours()) - 12; 
    var amPm = "PM"; 
} else { 
    var hour = date.getHours(); 
    var amPm = "AM"; 
} 
var time = hour + ":" + date.getMinutes() + " " + amPm; 
console.log(time); 
return time; 
} 

,您可以調用函數就像任何方法:

var time = timeFormatter(parseInt("2345678998765"));