2012-01-10 2 views
4

У меня есть скрипт JQuery, который принимает строку в миллисекундах в качестве параметра, например:JQuery Формат время

params.tweetDate='77771564221'; 

Что мне нужно сделать, это создать функцию JQuery, которая будет иметь возможность отформатировать эти миллисекунды строка в США, например 10.00 AM или 10.00 PM.

Есть ли функция jQuery, способная это сделать?

Пожалуйста, помогите.

Благодаря

+0

что делает tweetDate представляет? это миллисекунды с полуночи или с 1969 года (я думаю, что именно здесь дата начнет отсчет, если она будет представлена ​​миллисекундами)? – redmoon7777

+0

@ redmoon7777: Нормальные значения - секунды или миллисекунды с момента Эпохи (1 января 1970 года в полночь GMT). В своем ответе я заметил, что вышеизложенное не является ни тем, ни другим, поскольку использует его как миллисекунды, так как «Эпоха» дает нам дату в июне 1972 года (задолго до Твиттера) и использует ее в считанные секунды, так как «Эпоха» дает нам дату в июне 4434 года. :-) Итак, первое, что действительно будет, это выяснить, что представляет это значение. –

ответ

8

Существует Дата объект в чистом JavaScript, не 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

Не могли бы вы привести пример? –

+0

Добавлен код. Вы можете закончить, я уверен. – YuS

+0

Yuri: * "(проверьте, если h> 12)" * Нет, это 'h> = 12' (12 - 12:00 (полдень), 0 - 12 часов [полуночи]). –

1

взглянуть на timeago: это JQuery плагин используется именно для этих целей.

+0

Я не очень хорошо это понимаю. Не могли бы вы представить пример того, как он будет работать с миллисекундной строкой? –

+0

Это показывает разницу между двумя временами ... – 472084

+0

+1, но это похоже на использование стиля «назад», а не просто форматирование в стиле времени США, как запрошено ОП. –

3

Нет, для этого нет функции jQuery. Вы можете использовать собственный Date объект

  • в JavaScript, используя getHours() и getMinutes() функции обработку AM/PM вещи самостоятельно (например, часы> = 12 PM), обивка из протокола с ведущими 0, если минутами являются менее 10 и т. д. Также обратите внимание, что если часы равны 0, вы хотите сделать это 12 (потому что при использовании стиля AM/PM вы пишете полночь как «12:00 AM», а не «0:00 AM»).
  • DateJS, надстройка библиотеки, которая делает огромное количество дат материала (хотя, к сожалению, это не активно поддерживается)
  • PrettyDate от Резига (создатель JQuery)

Чтобы использовать только о каком-либо из них сначала нужно превратить это значение «миллисекунды» в объект Date. Если это действительно значение «миллисекунды», сначала сначала вы разбираете строку в число через parseInt(str, 10), а затем используйте new Date(num), чтобы создать объект , представляющий этот момент времени. Итак:

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

Однако значение вы цитировал, что вы сказали, это значение миллисекунды, кажется немного странным   — обычно это миллисекунды, поскольку Эпоха (1 января 1970), что и использует JavaScript , но new Date(parseInt("77771564221", 10)) дает нам дату в июне 1972 года, задолго до Твиттера. Это не секунд, так как The Epoch (довольно распространенное соглашение Unix), потому что new Date(parseInt("77771564221", 10) * 1000) дает нам дату в июне 4434 года. Итак, первое, что нужно выяснить, это то, что действительно представляет значение, миллисекунды с , когда. Затем отрегулируйте его так, чтобы он составлял миллисекунд с The Epoch, и загрузите его в new Date(), чтобы получить объект.

+0

Как это работает с моей миллисекундной строкой? я немного смущен. –

+0

@DiegoP: Ах, извините, оставил это. Обновлено. Однако значение, которое вы указали, немного странно. –

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")); 
Смежные вопросы