[英]Displaying Hours and Minutes as Words in JS
背景 :我正在使用getHours()
和getMinutes()
在页面上显示时间。
问题 :我正在尝试找出如何将数字时间(即“ 21:00”)转换为已写出的小时和分钟格式(即“ 9点钟”)。
我的JS:
function startTime()
{
var today=new Date();
var h=today.getHours();
var m=today.getMinutes();
// add a zero in front of numbers<10
m=checkTime(m);
document.getElementById('time').innerHTML="The time is "+h+" o'clock and "+m+" past";
t=setTimeout(function(){startTime()},500);
}
function checkTime(i)
{
if (i<10)
{
i="0" + i;
}
return i;
}
这是一个小提琴
您可以使用查找表或数组将数字转换为名称。
function startTime() {
var today = new Date();
var h = today.getHours();
var m = today.getMinutes();
// add a zero in front of numbers greater than 10
document.getElementById('time').innerHTML = "The time is " + convertHourToName(h) + " o'clock and " + convertNumberToName(m) + " past";
setTimeout(startTime,500);
}
function checkTime(i) {
if (i < 10) {
i = "0" + i;
}
return i;
}
function convertHourToName(num) {
if (num > 12) {
num -= 12;
}
return convertNumberToName(num);
}
function convertNumberToName(num) {
var lowNames = ["zero", "one", "two", "three",
"four", "five", "six", "seven", "eight", "nine",
"ten", "eleven", "twelve", "thirteen", "fourteen",
"fifteen", "sixteen", "seventeen",
"eighteen", "nineteen"];
var tensNames = ["twenty", "thirty", "forty", "fifty",
"sixty", "seventy", "eighty", "ninety"];
var tens, ones, result;
if (num < lowNames.length) {
result = lowNames[num];
} else {
tens = Math.floor(num / 10);
ones = num % 10;
if (tens <= 9) {
result = tensNames[tens - 2];
if (ones > 0) {
result += " " + lowNames[ones];
}
} else {
result = "unknown"
}
}
return result;
}
startTime();
工作演示: http : //jsfiddle.net/jfriend00/EmALf/
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.