从Javascript中获取Meridian

时间:2015-07-22 12:13:53

标签: javascript jquery date datetime

我有以下时间“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。

4 个答案:

答案 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];
}