牛客前端篇———FED7、时间格式化输出

题目描述

按所给的时间格式输出指定的时间
格式说明
对于 2014.09.05 13:14:20
yyyy: 年份,2014
yy: 年份,14
MM: 月份,补满两位,09
M: 月份, 9
dd: 日期,补满两位,05
d: 日期, 5
HH: 24制小时,补满两位,13
H: 24制小时,13
hh: 12制小时,补满两位,01
h: 12制小时,1
mm: 分钟,补满两位,14
m: 分钟,14
ss: 秒,补满两位,20
s: 秒,20
w: 星期,为 ['日', '一', '二', '三', '四', '五', '六'] 中的某一个,本 demo 结果为 五

示例1

输入

formatDate(new Date(1409894060000), 'yyyy-MM-dd HH:mm:ss 星期w')

输出

2014-09-05 13:14:20 星期五

代码

Data对象

在JS中使用Date对象来表示一个时间,其中Date()为一个构造函数

如果直接使用构造函数创建一个Date对象,则会封装为当前代码执行时间

var d = new Date();

如果想要显示一个指定的时间,则应该在构造函数中传入一个表示时间的字符串

var d2 = new Date("1/3/2019");  //  月/日/年  时间都为北京时间

对象名.getDate() //获取当前时间对象是几号

对象名.getDay()  //获取当前时间对象时周几 ,0表示周日

对象名.getMonth()   //获取当前时间对象的月份 0表示1月,1表示2月...

对象名.getFullYear()   //获取当前时间对象的年份

对象名.getTime()    //获取当前时间对象的时间戳,时间戳指的是从格林威治标准时间的1970年1月1日,0时0分0秒到

当前日期对象所花费的毫秒数(1秒=1000毫秒)

Date.now()  //获取当前代码执行时的时间的时间戳

replace()方法

ECMAScript v3 规定:

replace() 方法的参数 replacement 可以是函数而不是字符串。

在这种情况下,每个匹配都调用该函数,它返回的字符串将作为替换文本使用。

该函数的第一个参数是匹配模式的字符串。接下来的参数是与模式中的子表达式匹配的字符串,可以有 0 个或多个这样的参数。接下来的参数是一个整数,声明了匹配在 stringObject 中出现的位置。

最后一个参数是 stringObject 本身。

例子:

在本例中,我们将把字符串中所有单词的首字母都转换为大写:
 
name = 'aaa bbb ccc';
uw=name.replace(/\b\w+\b/g, function(word){
  return word.substring(0,1).toUpperCase()+word.substring(1);}
  );
在本题目中,结合上面的正则表达式:a,模式的匹配项;k,第一个捕获组的匹配项;v,第二个捕获组的匹配项。

 答案

function formatDate(t,str){
  var obj = {
    yyyy:t.getFullYear(),
    yy:(""+ t.getFullYear()).slice(-2),
    M:t.getMonth()+1,                                         //getMonth得到的是0-11,+1以后才是月份
    MM:("0"+ (t.getMonth()+1)).slice(-2),
    d:t.getDate(),
    dd:("0" + t.getDate()).slice(-2),
    H:t.getHours(),
    HH:("0" + t.getHours()).slice(-2),
    h:t.getHours() % 12,
    hh:("0"+t.getHours() % 12).slice(-2),
    m:t.getMinutes(),
    mm:("0" + t.getMinutes()).slice(-2),
    s:t.getSeconds(),
    ss:("0" + t.getSeconds()).slice(-2),
    w:['日', '一', '二', '三', '四', '五', '六'][t.getDay()]   //第二个参数是第一个数组的下标,比如[1, 2, 4][0] === 1
  };
  return str.replace(/([a-z]+)/ig,function($1){return obj[$1]});
}

运行环境:JavaScript (V8 6.0.0)

运行时间:958ms

占用内存:77920KB

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值