华为笔试题如下:
题目描述:
实现一段程序,输入一个自EPOC开始已经经过的时间(秒),按照自定义格式输出对应的时间。
自定义格式说明(除了年份,同意格式化2位宽,不足的补0),这里注意区分%HH24小时制(00-23)和%hh12小时制(01-12)
输入描述:首行为秒数;第二行为输出格式
输出秒数:经过计算和格式化后的时间
note:a.需要注意输入的时间单位为秒,需要化为毫秒级别;b.需要对12小时制进行转化处理。c.EPOC即1970.01.01零时
下面用nodejs实现格式化日期时间:
const readline = require('readline');
const rl = readline.createInterface({
input:process.stdin,
output:process.stdout
});
var inputDate = [];
function dateFmt(input,fmt){
var sdate = "1970.01.01 00:00:00";
var time = new Date(sdate).getTime();
var date = new Date();
date.setTime(time + input * 1000);
var o = {
"M+" : date.getMonth()+1, //月份
"d+" : date.getDate(), //日
"H+" : date.getHours(), //小时
"m+" : date.getMinutes(), //分
"s+" : date.getSeconds(), //秒
"q+" : Math.floor((date.getMonth()+3)/3), //季度
"S" : date.getMilliseconds() //毫秒
};
if(/(y+)/.test(fmt))
fmt=fmt.replace(RegExp.$1, (date.getFullYear()+"").substr(4 - RegExp.$1.length));
if(/(h+)/.test(fmt)){
var hour=date.getHours();
if(hour>12){
hour = hour-12;
}else if(hour==0){
hour=12;
}
fmt=fmt.replace(RegExp.$1, (RegExp.$1.length==1) ? (hour) : (("00"+ hour).substr((""+ hour).length)));
}
for(var k in o){
if(new RegExp("("+ k +")").test(fmt))
fmt = fmt.replace(RegExp.$1, (RegExp.$1.length==1) ? (o[k]) : (("00"+ o[k]).substr((""+ o[k]).length)));
}
return fmt;
}
rl.on('line', (line) => {
inputDate.push(line);
if(inputDate.length == 2){
console.log(dateFmt(inputDate[0],inputDate[1]));
rl.close();
}
})
下图为运行结果: