问题描述
我有在祖鲁语中生成时间的代码。 现在,我希望它具有多个输出选项,但是很简单。 有更快的方法可以做到这一点:
function zuluTime(format) {
if(!format) { return false; }
format = format.toLowerCase();
zuluDate = new Date();
zuluHour = zuluDate.getUTCHours();
zuluMin = zuluDate.getUTCMinutes();
zuluSec = zuluDate.getUTCSeconds();
zuluHour = (zuluHour <= 9) ? '0'+zuluHour : zuluHour;
zuluMin = (zuluMin <= 9) ? '0'+zuluMin : zuluMin;
zuluSec = (zuluSec <= 9) ? '0'+zuluSec : zuluSec;
zuluTenths = Math.floor((zuluSec / 60) * 10)
zulu = '<span>Z</span';
if(format == 'hhmmss') { time = (zuluHour+':'+zuluMin+':'+zuluSec+zulu); }
if(format == 'hhmm') { time = (zuluHour+''+zuluMin+zulu); }
if(format == 'hhmm.s') { time = (zuluHour+''+zuluMin+'.'+zuluTenths+''+zulu); }
return time;
}
是否可以做一些识别格式是否包含hh.s的函数,而不必另外识别?
1楼
您可以在使用RegExp ,并将函数用作第二个参数
var re = /hh|mm|ss|s/g,
map = {
hh: zuluHour,
mm: zuluMin,
ss: zuluSec,
s: zuluTenths
};
function replacor($0) {
if ($0 in map)
return map[$0];
return $0;
}
time = format.replace(re, replacor);
此方法可以轻松扩展以允许更多变量,并且可以在任何“格式”上使用 ,例如Thh:mm:ssZ
将变为T16:31:58Z
,即使您没有通过列表教它如何使用该特定格式。
如果hhmmss
等于hh:mm:ss
,则需要首先应用此转换来format
。