在Javascript中从时间获取Meridian

问题描述 投票:0回答:4

我有以下时间“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 中不起作用。

javascript jquery date datetime
4个回答
5
投票

你定义

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());


3
投票

我们可以通过使用带有美国英语参数的 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);

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';
}

它应该适用于所有平台。


0
投票

带有日期对象:

getMeridiem(date: Date) {
   return date.toLocaleTimeString().split(' ')[1];
}
© www.soinside.com 2019 - 2024. All rights reserved.