js 时间转换

最近一段时间修改了好多关于时间转换的bug,感觉关于js时间转换这里还是值的总结的。

首先在总结之前,先写两句注意事项:标准Time转北京Time要加8小时,windows的toLocalSting和ubuntu的toLocalString时间格式不相同。

1.时间戳转换成时间格式

1.1 分别获取,拼接字符串

javaScript 写道
var date = new Date()
date.getFullYear(); // 获取完整的年份(4位,1970)
date.getMonth(); // 获取月份(0-11,0代表1月,用的时候记得加上1)
date.getDate(); // 获取日(1-31)
date.getTime(); // 获取时间(从1970.1.1开始的毫秒数)
date.getHours(); // 获取小时数(0-23)
date.getMinutes(); // 获取分钟数(0-59)
date.getSeconds(); // 获取秒数(0-59)

 这种方式可以直接获取到年月日时分秒,想要什么格式直接拼起来就好。但是代码好像就有点多。。。

补充:Date()的七种参数格式

new Date("month dd,yyyy hh:mm:ss");
new Date("month dd,yyyy");
new Date("yyyy/MM/dd hh:mm:ss");
new Date("yyyy/MM/dd");
new Date(yyyy,mth,dd,hh,mm,ss);
new Date(yyyy,mth,dd);
new Date(ms);
//例如:
new Date("September 16,2016 14:15:05");
new Date("September 16,2016");
new Date("2016/09/16 14:15:05");
new Date("2016/09/16");
new Date(2016,8,16,14,15,5); // 月份从0~11
new Date(2016,8,16);
new Date(1474006780);
//他们均输出这样的日期时间格式
Fri Sep 16 2016 00:00:00 GMT+0800 (CST)

 1.2正则表达式转换

function getLocalTime(nS) {     
   return new Date(parseInt(nS) * 1000).toLocaleString().replace(/:\d{1,2}$/,' ');     
}

 parseInt() 函数可解析一个字符串(用getTime()获取到的时间戳要去掉最后的3位,正常时间戳是10位),并返回一个整数。

js中时间操作单位是毫秒。

toLocaleString() 方法可根据本地时间把 Date 对象转换为字符串,并返回结果。

replace() 方法用于在字符串中用一些字符替换另一些字符,或替换一个与正则表达式匹配的子串。

replace(/:\d{1,2}$/,' ')验证替换以:开始有一位或二位数字的结束字符串,就是秒;替换为空,要想显示秒数就不用替换啦。

例:

写道
var test = new Date(parseInt(1512392574)*1000).toLocaleString
console.log(test)
//输出
2017/12/4 下午9:02:54

 注意:有时候用toLocaleString()会将日期转换成2017/12/4这种格式输出,这种格式可以直接转换成时间戳(new Date("2015/06/23 08:00:20")).getTime()/1000

而有时候会转换成2017年12月4日的格式输出,这种格式就不能直接转换成时间戳。

笔者还没有搞清楚为什么会出现这种情况,如有知道的大神请告知。

不过可以用下面这两种方法来转换成你想要的格式

   function getLocalTime(nS) {     
       return new Date(parseInt(nS) * 1000).toLocaleString().replace(/年|月/g, "-").replace(/日/g, " ");      
    }
function getLocalTime(nS) {     
    return new Date(parseInt(nS) * 1000).toLocaleString().substr(0,17)}

 2.时间格式转换成时间戳

2.1 js获取当前时间戳

var timestamp1 = Date.parse(new Date());
var timestamp2 = (new Date()).valueOf();
var timestamp3 = new Date().getTime();
//第一种:获取的时间戳是把毫秒改成000显示,第二种和第三种是获取了当前毫秒的时间戳。

 2.2 js获取定制时间戳的方法

var oldTime = (new Date("2015/06/23 08:00:20")).getTime()/1000;
//getTime()返回数值的单位是毫秒。

 3.UTC时间,GMT时间,CST时间

UTC时间等于GMT时间,比被北京时间少8个小时。CST时间是美国时间,比北京时间少14个小时

不过在js当中没有直接转换成CST时间的方法。

另外toDateString()将Date对象当中的日期部分转换成字符串。toTimeString()转时间部分。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值