当前位置: 代码迷 >> JavaScript >> javascript中的自定义输出
  详细解决方案

javascript中的自定义输出

热度:94   发布时间:2023-06-13 12:33:56.0

我有在祖鲁语中生成时间的代码。 现在,我希望它具有多个输出选项,但是很简单。 有更快的方法可以做到这一点:

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的函数,而不必另外识别?

您可以在使用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

  相关解决方案