在我看来,这是一项简单的任务,但我还没有设法完成这项工作。
本质上,我从一个包含 ISO 格式时间 (HH:MM:SS) 的字符串开始,我想知道如何使用 JavaScript 将其转换为 H:MM am|pm。
任何帮助深表感谢。
在我看来,这是一项简单的任务,但我还没有设法完成这项工作。
本质上,我从一个包含 ISO 格式时间 (HH:MM:SS) 的字符串开始,我想知道如何使用 JavaScript 将其转换为 H:MM am|pm。
任何帮助深表感谢。
这个简单的函数应该可以解决问题:
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/
仅仅因为出现了无法正确处理中午或午夜时间的解决方案,我将把我的帽子扔进戒指,即使它与提供的没有什么不同(除了它正常工作的事实):
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;
};
像这样的东西会起作用......
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];
编辑:关于中午和午夜的问题的评论中有一些要点。我将把解决这些问题作为练习留给读者。(我觉得这里真正有趣的部分是进行字符串解析)