资讯专栏INFORMATION COLUMN

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

luck / 2994人阅读

摘要:一行代码实现时间戳转时间格式前端开发过程中,常常需要将时间戳转化为标准时间格式供用户浏览。新思路为了将时间戳转换为我们需要的时间格式,我们写了两个函数,加起来十几行。

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

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

老方法

平常用的基本是这个方法,用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.ucloud.cn/yun/96921.html

相关文章

  • 【巨杉数据库Sequoiadb】【咨询】【数据操作】【聚集查询】在执行聚集查询时,字符类型的字段能否

    摘要:问题描述在聚集查询时,能否将字符类型字段按照实际内容进行分组去重呢示例插入数据包含字符串执行查询,能否实现将字符串格式按照这一段内容进行分组去重解决办法函数目前不支持将字符串的某段内容进行分组,只支持对整个字符串进行分组去重从客户的问题来看 【问题描述】 在聚集查询时,能否将字符类型字段按照实际内容进行分组去重呢? 示例: 插入数据包含字符串 db.cs.cl.insert( { a ...

    EddieChan 评论0 收藏0
  • Python之时间和日期使用小结

    摘要:对于日期的操作可以说是比较常见的了日期与格式化字符串互转,日期与时间戳互转,日期的加减操作等,下面主要介绍下常见的需求场景如何实现基本包引入主要需要引入时间和日期的处理包,后面的基本操作都是基于此获取当前时间获取当前时间,有几种方式 对于日期的操作可以说是比较常见的case了,日期与格式化字符串互转,日期与时间戳互转,日期的加减操作等,下面主要介绍下常见的需求场景如何实现 1. 基本...

    BigNerdCoding 评论0 收藏0
  • 聊聊 Android 的网络请求框架 Retrofit 2 + okhttp 3

    摘要:解决后端没有找到优雅的解决方式被迫修改接口实现之所以继续保留是为了兼容其它调用方处理逻辑时先判断是否有值没有的话再从取研究写过一点不太相信想自己试试。打听后得知客户端的网络框架是配合。开始研究安装环境就不说了。 工作中跟客户端沟通时产生了点问题, 记录一下. 起因 后端有一个接口是这样的 @RequestMapping(android) public BaseResult androi...

    刘明 评论0 收藏0
  • js常用的时间戳互相转换方法,以及一些其它相关时间方法。

    摘要:前言做项目其实经常需要与时间接触。时间戳与时间的转换问题,在这做一个记录。我自己试了最新版的,,返回的是一样的。 前言 做项目其实经常需要与时间接触。时间戳与时间的转换问题,在这做一个记录。 1.获取特定格式的时间 myDate.getYear(); //获取当前年份(2位) myDate.getFullYear(); //获取完整的年份(4位,1970-????) myDate.ge...

    李昌杰 评论0 收藏0
  • JSONModel使用「数据转模型」

    摘要:一准备下载快速的解析数据为模型支持层级嵌套模型解析,指定类型自动转化无需手动解析一行代码搞定配合插件效果更佳下载二基本使用假设你的串像下面这样子创建一个你自己的类并继承至在你的头文件里面进行声明你所需要的值文件中你不需要做其他的事情了初始化 一、准备 JSONModel_下载 showImg(https://segmentfault.com/img/remote/14600000090...

    Backache 评论0 收藏0

发表评论

0条评论

luck

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<