我有一个jQuery脚本,它在参数内接收一个以毫秒为单位的字符串,如下所示:
params.tweetDate='77771564221';
我需要做的是创建一个jQuery函数,该函数能够在美国时间格式化这个毫秒字符串,如10.00 AM
或10.00 PM
。
是否有能够执行此操作的jQuery函数?
请帮忙。
由于
答案 0 :(得分: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)
答案 1 :(得分:3)
不,这没有jQuery功能。你可以使用
Date
对象,使用getHours()
和getMinutes()
函数,自己处理AM / PM事物(例如,小时> = 12是PM),填写分钟如果分钟小于10,则前导0,等等。另请注意,如果小时为0,则需要将其设为12(因为在使用AM / PM样式时,您将午夜写为“12:00 AM”,而不是“ 0:00 AM“)。要使用其中任何一个,首先必须将“毫秒”值转换为Date
对象。如果它确实是“毫秒”值,那么首先通过parseInt(str, 10)
将字符串解析为数字,然后使用new Date(num)
创建表示该时间点的Date
对象。所以:
var dt = new Date (parseInt(params.tweetDate, 10));
然而,你所引用的值,你所说的是一个毫秒值,似乎有点奇怪 - 通常是自The Epoch(1970年1月1日)以来的毫秒,这是JavaScript使用的,但是new Date(parseInt("77771564221", 10))
在Twitter之前很久就给了我们1972年6月的约会。从Epoch开始,它不是秒(一种相当常见的Unix惯例),因为new Date(parseInt("77771564221", 10) * 1000)
在6434年6月给我们一个日期。所以要找出的第一件事是该值实际代表什么,自 以来的毫秒数。然后将其调整为自The Epoch以来的毫秒数,然后将其输入new Date()
以获取对象。
答案 2 :(得分: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"));
答案 3 :(得分:1)
看看timeago:这是一个专门用于此目的的jquery插件。
答案 4 :(得分: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(''));