javascript 中的自定义输出
custom output in javascript
我有在祖鲁语中生成时间的代码。现在我希望它有多个输出选项,但方法很简单。有没有更快的方法:
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,例如,而不必 if else?
您可以在 String.prototype.replace
中使用 RegExp 并将函数作为第二个 argument
var re = /hh|mm|ss|s/g,
map = {
hh: zuluHour,
mm: zuluMin,
ss: zuluSec,
s: zuluTenths
};
function replacor([=10=]) {
if ([=10=] in map)
return map[[=10=]];
return [=10=];
}
time = format.replace(re, replacor);
此方法很容易扩展以允许更多变量,并且适用于任何 "formatting",例如Thh:mm:ssZ
将变为 T16:31:58Z
,即使您没有使用列表来教它针对特定格式做什么。
如果 hhmmss
等于 hh:mm:ss
,您需要先将此转换应用于 format
。
我有在祖鲁语中生成时间的代码。现在我希望它有多个输出选项,但方法很简单。有没有更快的方法:
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,例如,而不必 if else?
您可以在 String.prototype.replace
中使用 RegExp 并将函数作为第二个 argument
var re = /hh|mm|ss|s/g,
map = {
hh: zuluHour,
mm: zuluMin,
ss: zuluSec,
s: zuluTenths
};
function replacor([=10=]) {
if ([=10=] in map)
return map[[=10=]];
return [=10=];
}
time = format.replace(re, replacor);
此方法很容易扩展以允许更多变量,并且适用于任何 "formatting",例如Thh:mm:ssZ
将变为 T16:31:58Z
,即使您没有使用列表来教它针对特定格式做什么。
如果 hhmmss
等于 hh:mm:ss
,您需要先将此转换应用于 format
。