自定义javascript输出

custom output in javascript

本文关键字:输出 javascript 自定义      更新时间:2023-09-26

我有生成祖鲁时间的代码。现在我希望它有多个输出选项,但简单的方法。有没有更快的方法:

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,不需要else?

您可以在String.prototype.replace中使用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