我有以下时间“2015年6月22日星期三03:45:24”我如何使用Javascript获得Meridian。 我这样做了:
d= Mon Jun 22 03:45:24 PDT 2015;
var hours = d.getHours();
var meridiem = "AM";
if (d.getHours() > 12) {
hours = d.getHours() % 12;
if (hours == 2) {
hours = 12;
}
meridiem = "PM";
}
但它不适用于IE 8。
答案 0 :(得分:2)
你定义
d= Mon Jun 22 03:45:24 PDT 2015;
实际上它在javascript中没什么 有些浏览器更智能一些没有,这取决于浏览器的行为 你必须告诉javascript这样
function getCurrentTime() {
var currentTime;
// here we can give our date
var currentDate = new Date("Mon Jun 22 03:45:24 PDT 2015");
// OR we can define like that also for current date
// var currentDate = new Date();
var hour = currentDate.getHours();
var meridiem = hour >= 12 ? "PM" : "AM";
currentTime = ((hour + 11) % 12 + 1) + ":" + currentDate.getMinutes() + meridiem;
return currentTime;
}
答案 1 :(得分:2)
根据JavaScript Date
对象here的文档,没有直接获取12小时小时的方法,因此无法直接从Date
对象获取am / pm
你可以获得数小时(24小时格式),您可以使用它来获得12小时和上午/下午。 (你已经完成了,但我不明白你在代码中想要做什么。)
这是一种方法。
此代码的灵感来自@tinka。
var d = new Date("Mon Jun 22 03:45:24 PDT 2015");
var h = (d.getHours() + 11) % 12 + 1; //Courtesy @tinka
var m = h > 12 ? 'pm' : 'am';
如果你要反复使用它们,你总是可以向Date.prototype
添加方法。
Date.prototype.getHours12 = function() {
return (this.getHours() + 11) % 12 + 1; // edited.
}
Date.prototype.getMeridiem = function() {
return this.getHours() > 12 ? 'pm' : 'am';
}
它应该适用于所有平台。
答案 2 :(得分:1)
我们可以用12小时格式获得时间,包括使用Date.prototype.toLocaleTimeString()方法和美国英语参数的子午线,该参数返回上午/下午的时间。如果没有参数'en-US'
,date将返回它认为适合您时区的格式。
从那里我们可以使用slice方法使用否定索引获取时间戳的最后两个字符:
var d = new Date("Mon Jun 22 03:45:24 PDT 2015")
// US English uses 12-hour time with AM/PM
var timestamp = d.toLocaleTimeString('en-US');
// timestamp → "03:45:24 AM"
var meridian = timestamp.slice(-2);
// meridian → "AM"
简洁的衬里:
var meridian = new Date("Mon Jun 22 03:45:24 PDT 2015").toLocaleTimeString().slice(-2);
答案 3 :(得分:0)
带有日期对象:
getMeridiem(date: Date) {
return date.toLocaleTimeString().split(' ')[1];
}