在ISO中将ISO时间转换为HH:MM am | pm

时间:2012-09-06 19:19:36

标签: javascript time iso

  

可能重复:
  JavaScript seconds to time with format hh:mm:ss

在我看来,这是一项简单的任务,但我还没有成功完成这项任务。

基本上,我从一个包含ISO格式时间(HH:MM:SS)的字符串开始,我想知道如何使用JavaScript将其转换为H:MM am | pm。

非常感谢任何帮助。

4 个答案:

答案 0 :(得分:4)

你好这可能对你有帮助......它是一个叫做片刻的jquery插件......

一个轻量级(4.8k)javascript日期库,用于解析,操作和格式化日期。

Moment.js

答案 1 :(得分:3)

这个简单的功能应该可以解决问题:

function convertTime (isoTime) {
  var hours   = parseInt(isoTime.substring(0, 2), 10),
      minutes = isoTime.substring(3, 5),
      ampm    = 'am';

  if (hours == 12) {
    ampm = 'pm';
  } else if (hours == 0) {
    hours = 12;
  } else if (hours > 12) {
    hours -= 12;
    ampm = 'pm';
  }

  return hours + ':' + minutes + ' ' + ampm;
}

应该是不言自明的。请参阅此jsfiddle,例如:http://jsfiddle.net/nscXP/3/

答案 2 :(得分:2)

只是因为有一些解决方案无法正常处理中午或午夜时间,我会把我的帽子扔进戒指中,即使它与提供的内容没有什么不同(除了事实之外)它运作正常):

var isoToCommonTime = function(iso) {
    var groups = iso.match(/^(\d\d):(\d\d)/),
        hour = +groups[1],
        ampm = (hour >= 12) ? "pm" : "am";

    if(hour > 12) {
        hour -= 12;
    } else if(hour === 0) {
        hour = 12;
    }

    return hour + ":" + groups[2] + " " + ampm;
};

答案 3 :(得分:1)

像这样的东西会起作用......

input = "12:34:45";
groups = input.match(/(.+):(.+):(.+)/);

if (groups[1] > 12) {
    hour = groups[1] - 12;
    unit = "pm";
} else {
    hour = groups[1];
    unit = "am";
}

minutes = groups[2];

编辑:关于中午和午夜问题的评论中有一些很好的观点。我会把这些问题作为练习留给读者。 (我觉得这里真正有趣的部分是进行字符串解析