我有以下时间“Mon Jun 22 03:45:24 PDT 2015”如何使用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 中不起作用。
你定义
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;
}
console.log(getCurrentTime());
我们可以通过使用带有美国英语参数的 Date.prototype.toLocaleTimeString() 方法来获取 12 小时格式的时间,包括子午线,该方法返回 AM/PM 时间。如果没有参数
'en-US'
日期将返回它认为适合您的时区的格式。
从那里我们可以利用 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);
根据 JavaScript
Date
对象这里的文档,没有直接获取 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';
}
它应该适用于所有平台。
带有日期对象:
getMeridiem(date: Date) {
return date.toLocaleTimeString().split(' ')[1];
}