在我看来,这是一项简单的任务,但我还没有成功完成这项任务。
基本上,我从一个包含ISO格式时间(HH:MM:SS)的字符串开始,我想知道如何使用JavaScript将其转换为H:MM am | pm。
非常感谢任何帮助。
答案 0 :(得分:4)
答案 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];
编辑:关于中午和午夜问题的评论中有一些很好的观点。我会把这些问题作为练习留给读者。 (我觉得这里真正有趣的部分是进行字符串解析)