JavaScript AM/PM 时间比较

7
假设我有两个日期时间变量:
var fromdt = "2013/05/29 12:30 PM";
var todt = "2013/05/29 01:30 AM";

我想比较这两个日期时间。我该如何让JavaScript识别时间是上午还是下午?我认为JavaScript将以24小时制格式进行时间比较。我需要将时间转换为24小时格式吗?那样正确吗?有人能给出正确的解决方案吗?

1
请查看http://momentjs.com/ - c0deNinja
5
那么,如果时间是01:30,你会如何分辨它是白天还是晚上? - zerkms
@zerkms..我认为Javascript将通过24小时格式比较时间。那么我们需要将时间转换为24小时格式吗? - Dylan
@Dylan:我不是在问JS,我是在问你。顺便说一下,“AM/PM”格式只是一个时间表示,它的内部存储方式是另一个问题。但为了简单起见,内部数据根本不关心上午/下午。 - zerkms
1
那么这些字符串中是否含有“上午”或“下午”呢?你觉得这不是相关的信息吗? - JJJ
显示剩余5条评论
2个回答

8

只需使用纯 JavaScript 函数

var fromdt = "2013/05/29 12:30 PM";
var todt = "2013/05/29 01:30 AM";
var from = new Date(Date.parse(fromdt));
var to = new Date(Date.parse(todt));

alert(from);
alert(to)

if (from > to) alert("From");
else alert("To");

一旦将日期解析为日期格式,您可以按照标准运算符符号(>,<等)进行比较并对其进行任何操作。

我不确定您需要对它们执行什么操作,但http://www.w3schools.com/jsref/jsref_obj_date.asp是一个不错的参考资料。

这里有一个糟糕的沙盒,其中包含上述代码http://jsfiddle.net/QpFcW/

还有一个更好的,但XX已经删除了 :( http://jsfiddle.net/QpFcW/1/


datDate.parse(fromdt)会从日期字符串中识别AM/PM吗? - Dylan
当它将字符串解析为日期对象时,它会隐式地将am/pm特征识别为日期的一部分。 - monkeyhouse

0
请使用这个函数。
function get_time() {
  var time_t = "";
  var d = new Date();
  var cur_hour = d.getHours();

  cur_hour < 12 ? (time_t = "am") : (time_t = "pm");
  cur_hour == 0 ? (cur_hour = 12) : (cur_hour = cur_hour);
  cur_hour > 12 ? (cur_hour = cur_hour - 12) : (cur_hour = cur_hour);
  var curr_min = d.getMinutes().toString();
  var curr_sec = d.getSeconds().toString();
  if (curr_min.length == 1) {
    curr_min = "0" + curr_min;
  }
  if (curr_sec.length == 1) {
    curr_sec = "0" + curr_sec;
  }
  $("#updatedTime").html(
    cur_hour + ":" + curr_min + ":" + curr_sec + " " + time_t
  );
  alert(cur_hour + ":" + curr_min + ":" + curr_sec + " " + time_t);
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接