一行代码实现时间戳转时间格式

https://segmentfault.com/a/1190000015992232?utm_source=tag-newest

function time(time = +new Date()) {
var date = new Date(time + 8 * 3600 * 1000);
return date.toJSON().substr(0, 19).replace(‘T‘, ‘ ‘).replace(‘/-/g‘, ‘.‘);
}
console.log(time());

前端开发过程中,常常需要将时间戳转化为标准时间格式供用户浏览。不借助方法库的情况下,如何又快又好的实现呢?下面介绍两种方法。

老方法

平常用的基本是这个方法,用Date方法依次将年月日时分秒一个个算出来,然后拼接成需要的时间格式字符串。

function transformTime(timestamp = +new Date()) {
    if (timestamp) {
        var time = new Date(timestamp);
        var y = time.getFullYear(); //getFullYear方法以四位数字返回年份
        var M = time.getMonth() + 1; // getMonth方法从 Date 对象返回月份 (0 ~ 11),返回结果需要手动加一
        var d = time.getDate(); // getDate方法从 Date 对象返回一个月中的某一天 (1 ~ 31)
        var h = time.getHours(); // getHours方法返回 Date 对象的小时 (0 ~ 23)
        var m = time.getMinutes(); // getMinutes方法返回 Date 对象的分钟 (0 ~ 59)
        var s = time.getSeconds(); // getSeconds方法返回 Date 对象的秒数 (0 ~ 59)
        return y + ‘-‘ + M + ‘-‘ + d + ‘ ‘ + h + ‘:‘ + m + ‘:‘ + s;
      } else {
          return ‘‘;
      }
}
transformTime(); // "2018-8-8 12:9:12"

老方法改进版

上面的转换方法,通过将时间戳转换为Date实例,利用Date对应的方法获取对应的年月日时分秒,获取的时间格式是‘2018-8-8 12:9:12’,看着有点别扭。为了转化为我们常用的时间格式,还需要注意对小于10的值,在前面添加字符串‘0’,转换为‘2018-08-08 12:09:12’这种时间格式。

function transformTime(timestamp = +new Date()) {
    if (timestamp) {
        var time = new Date(timestamp);
        var y = time.getFullYear();
        var M = time.getMonth() + 1;
        var d = time.getDate();
        var h = time.getHours();
        var m = time.getMinutes();
        var s = time.getSeconds();
        return y + ‘-‘ + addZero(M) + ‘-‘ + addZero(d) + ‘ ‘ + addZero(h) + ‘:‘ + addZero(m) + ‘:‘ + addZero(s);
      } else {
          return ‘‘;
      }
}
function addZero(m) {
    return m < 10 ? ‘0‘ + m : m;
}
transformTime(); // "2018-08-08 12:09:12"

对返回小于10的时间数值进行处理,用‘addZero’方法为字符串添加‘0’,这样格式就对称了。

新思路

为了将时间戳转换为我们需要的时间格式,我们写了两个函数,加起来十几行。前段时间,部门大佬告知了另外一种方式,一行代码完成时间戳转换为‘YYYY-MM-DD HH:mm:ss’形式的时间格式,顿时代码精简了很多,话不多说,亮出代码

function time(time = +new Date()) {
    var date = new Date(time + 8 * 3600 * 1000); // 增加8小时
    return date.toJSON().substr(0, 19).replace(‘T‘, ‘ ‘);
}
time(); // "2018-08-09 18:25:54"

Date的‘toJSON’方法返回格林威治时间的JSON格式字符串,实际是使用‘toISOString’方法的结果。字符串形如‘2018-08-09T10:20:54.396Z’,转化为北京时间需要额外增加八个时区,我们需要取字符串前19位,然后把‘T’替换为空格,即是我们需要的时间格式。

function time(time = +new Date()) {
    var date = new Date(time + 8 * 3600 * 1000);
    return date.toJSON().substr(0, 19).replace(‘T‘, ‘ ‘).replace(/-/g, ‘.‘);
}
time(); // "2018.08.09 18:25:54"

把时间格式中的‘-’修改为‘.’或者其他符号都是可以的。对比老方法,这种方法代码量比以前省了不止一星半点的,读起来也简洁多了。如果时间格式需要毫秒数,只需要获取前23位字符串,和上面一样用replace方法替换。

原文地址:https://www.cnblogs.com/maidongdong/p/11230988.html

时间: 2024-11-05 14:10:26

一行代码实现时间戳转时间格式的相关文章

js将时间戳转为时间格式

时间戳转时间格式 //分钟 let timeM= parseInt(msg/1000/60%60); if(timeM<10){ timeM="0"+timeM; } //秒钟 let timeS=parseInt(msg/1000%60); if(timeS<10){ timeS="0"+timeS; } let time=timeM+":"+timeS; 原文地址:https://www.cnblogs.com/qq3763247

js时间戳和时间格式之间的转换

js里面的data对象的运行 很实用的东西,, 直接上代码: //时间戳转换成日期时间2014-8-8 下午11:40:20 function formatDate(ns){ return new Date(parseInt(ns) * 1000).toLocaleString().replace(/年|月/g, "-").replace(/日/g, " "); } //时间戳转换成八位日期2014-5-5 function userDate(uData){ var

linux时间戳和时间格式的转化

1.将时间戳转化为yyyy-MM-dd HH:mm:ss时间格式 date -d @时间戳(秒) 2.设置服务器时间---特别注意使用 date -s 时间

js_时间戳和时间格式之间的转换。

关于我的理解,简单明了点: 时间戳:把一个日期使用一个数字表示出来,这个数字就是这个日期的秒数. 日期:就是我们常见的时间表现形式. 时间戳对于一般看时间不够直观明了,可是在程序的世界里作用可大了. 获取当前的时间戳: 1 // 获取当前时间戳(以s为单位) 2 var timestamp = Date.parse(new Date()); 3 timestamp = timestamp / 1000; 获取某一日期的时间戳: 1 // 获取某个时间格式的时间戳 2 var stringTime

使用java代码将时间戳和时间互相转换

时间戳转时间: SimpleDateFormat simpleDateFormat = null; simpleDateFormat = new SimpleDateFormat("yyyyMMdd"); Date date = new Date(System.currentTimeMillis()); String day = simpleDateFormat.format(date); simpleDateFormat = new SimpleDateFormat("HH

SQLServer中将时间戳转换为时间格式

--在sql中将时间戳转换为时间类型 SQL里面有个DATEADD的函数.时间戳就是一个从1970-01-01 08:00:00到时间的相隔的秒数.所以只要把这个时间戳加上1970-01-01 08:00:00这个时间就可以得到你想要的时间了select DATEADD(second,1268738429 + 8 * 60 * 60,'1970-01-01 00:00:00') 注解:北京时间与GMT时间关系    1.GMT是中央时区,北京在东8区,相差8个小时 2.所以北京时间 = GMT时

JS时间戳转时间格式

//转化为时间格式 function getDate(timestamp) { timestamp = timestamp.replace("/Date(", "").replace(")/", ""); if (timestamp.indexOf("+") > 0) { timestamp = timestamp.substring(0, timestamp.indexOf("+"

C# 时间戳转换为时间格式

// 时间戳转为格式 public DateTime StampToDateTime(string timeStamp) { DateTime dateTimeStart = TimeZone.CurrentTimeZone.ToLocalTime(new DateTime(1970, 1, 1)); long lTime = long.Parse(timeStamp + "0000000"); TimeSpan toNow = new TimeSpan(lTime); return

个人常用 JavaScript 时间戳、时间格式处理function

输出时间  2017/8/9 var myDate = new Date(); myDate.toLocaleDateString():可以获取当前日期 2017/8/9