华为笔试题之nodejs实现日期时间的格式化

华为笔试题如下:

题目描述:

实现一段程序,输入一个自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();
	}
})

下图为运行结果:

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值