资讯专栏INFORMATION COLUMN

Date日期转换

djfml / 3397人阅读

摘要:传入的格式要求详见日期格式打印结果作为构造函数作为构造函数可以通过指针实例化一个的实例对象,这个对象是一个日期对象。所有实例的属性和方法即是继承于构造函数原型上的属性和方法。

前言
之前写博客都是在github的搭建的个人博客上,最近开始迁移博客上的内容到segmentfalut。一方面是想重新整理下写过的博客。另一方面也是想与大家多多交流,找到现阶段自己的不足。第一篇文章是关于Date对象,这篇博客是关于Date对象的一些定义和一些常用方法的使用。
Date对象 1. 作为Date对象 1-1 用法

作为普通对象可以直接作为函数调用,返回当前标准时间格式的字符串。

传参和不传参返回结果一致。

Date();
//打印结果
"Wed Dec 05 2018 19:43:52 GMT+0800 (中国标准时间)" 

1-2 Date对象方法

Date.now()

返回当前时间的时间戳,不接受传参。
Date.now();
//打印结果
1544063816980

Date.parse()

传入解析日期字符串返回时间戳,如果解析失败,返回NaN。(传入的格式要求详见parse日期格式)
Date.parse("2018-09-09 01:02:03");
//打印结果
1536426123000

2. 作为Date()构造函数
1.作为构造函数可以通过new指针实例化一个Date的实例对象,这个对象是一个日期对象。
2.注意:new Date()接受传参,传参格式与上文提到的parse()方法传参格式一致,但返回的数据时标准时间格式对象。
let date = new Date();
// Thu Dec 06 2018 09:29:58 GMT+0800 (中国标准时间)
2-1 实例方法

从上图可以看出所有的Date实例都继承自Date.prototype。所有实例的属性和方法即是继承于Date构造函数原型上的属性和方法。这些方法大致分为Getter,Setter,Conversion getter几类。我主要是对Getter类的几种方法进行分析。更多Date的原型方法可见Date对象实例方法
方法 描述
getDate() 返回一个月中的某一天(1 ~ 31)
getDay() 返回一周中的某一天(0 ~ 6),星期日为0,星期一为1
getMonth() 返回月份(0 ~ 11)
getFullYear() 以四位数字返回年份
getHours() 返回小时(0 ~ 23)
getMinutes() 返回分钟(0 ~ 59)
getSeconds() 返回秒数(0 ~ 59)
getTime() 返回时间戳
通过上面表格的方法,我们可以对页面上的日期进行转换来与后台进行交互。
2-2 日期转换方法
指定时间戳转化成日期或者时间,可指定分割符和转换类型。
function unixStandardDate(dates = Date.now(), separatorStr = "-", unixType = "date") {
    //把时间戳转化成Date对象
    let date = new Date(dates);
    //获取年月日
    let year = date.getFullYear();
    let month = date.getMonth() + 1;
    month = month < 10 ? ("0" + month) : month;
    let day = date.getDate();
    day = day < 10 ? ("0" + day) : day;
    //返回的年月日
    let resultDate = year + separatorStr + month + separatorStr + day;
    //获取时间
    let hours = date.getHours();
    hours = hours < 10 ? ("0" + hours) : hours;
    let minutes = date.getMinutes();
    minutes = minutes < 10 ? ("0" + minutes) : minutes;
    let seconds = date.getSeconds();
    seconds = seconds < 10 ? ("0" + seconds) : seconds;
    let resultTime = hours + ":" + minutes + ":" + seconds
    //判断是转换日期还是转换时间
    if (unixType === "date") {
        return resultDate;
    } else if (unixType === "time") {
        return resultDate + " " + resultTime;
    }
}
console.log(unixStandardDate(undefined, "/", "time"));
//后台返回的时间戳处理
console.log(unixStandardDate(1543622400000));

//打印结果
"2018/12/06 09:58:12"
"2018-12-01"
指定日期或者时间,转化成时间戳。
指定连接符替换只是为了方便不同格式的处理。
function unixTimeStamp(date, separatorStr) {
  let newDate = date.replace(eval("/"+ separatorStr +"/g"), "/");
  let resultDate = new Date(newDate);
  let timeStamp = resultDate.getTime();
  return timeStamp;
}
console.log(unixTimeStamp("2019-09-07 00:00:00", "-"));
// 打印结果
1567785600000
返回当前月份的上一个月
function getPreMonth(date, separatorStr = "-") {
    let year = date.split(separatorStr)[0];
    let month = date.split(separatorStr)[1];
    //设置变量获取前一个月
    let resultYear = year;
    let resultMonth = parseInt(month) - 1;
    //判断是否为1月份,返回上一年
    if (resultMonth === 0) {
        resultYear = parseInt(resultYear) - 1;
        resultMonth = 12;
    }
    //判断新的月份是否小于10
    if (resultMonth < 10) {
        resultMonth = "0" + resultMonth;//月份填补成2位。
    }
    return resultYear + separatorStr  + resultMonth;
}
console.log(getPreMonth("2016-09", "-"));
//打印结果
"2016-08"
小结
写本篇文章的主要目的只是为了更好的处理时间戳和日期格式在前后端交互工程中遇到的问题,关于更多的Date详情,请移步JavaScript Date 对象

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/99773.html

相关文章

  • 日期时间的转换

    摘要:因此,思路是,先将字符串日期转换成时间对象,再利用的方法进行时间的加减,改变后,我们再将对象转换成字符串日期即可。 时间戳是什么 时间戳是指自1970年1月1日00:00:00 (世界标准时间) 起经过的毫秒数。目前大部分情况下为13位,但有的时候服务器会省略存储10位,即存储的是秒数,因为日常使用不需要那么精确到秒。 关于Date函数 Date这里先不赘述,可自行阅读文档。 我们现在...

    everfly 评论0 收藏0
  • Date对象常用的封装方法及遇到的坑

    摘要:使用中的对象已经很久了但是一直以来都没有将常用的封装函数和遇到的坑记录下来趁着今天有空就记录下来方便自己下次直接使用并提醒自己遇到过那些坑。利用设置日期时从设置当设置为时即上个月的最后一天参考 使用JS中的Date对象已经很久了,但是一直以来都没有将常用的封装函数和遇到的坑记录下来,趁着今天有空,就记录下来,方便自己下次直接使用,并提醒自己遇到过那些坑。如果有哪些地方不对,希望大家能够...

    taowen 评论0 收藏0
  • 日期与时间戳之间的相互转换

    摘要:中国标准时间将转换后的标准日期转换为时间戳。中国标准时间中国标准时间中国标准时间不设定时分秒,则默认转换为一般情况下可以转换以等分隔的日期形式,但是在中会出现不兼容的问题将所有的转为即可 分类一:将日期转换为时间戳 要将日期转换为时间戳,首先得先获取到日期,这里可以直接指定日期,或者是使用当前日期。要获取当前日期,我们可以使用new Date()来获取: (1)、将当前日期转换为时间戳...

    monw3c 评论0 收藏0
  • 全面解析Java日期时间API

    摘要:类是一个抽象类,它为特定瞬间与一组诸如等日历字段之间的转换提供了一些方法,并为操作日历字段例如获得下星期的日期提供了一些方法。是不变的日期时间对象代表一个日期时间,往往被视为年月日时分秒。获得实例的日期和时间。 时区 GMT(Greenwich Mean Time):格林尼治时间,格林尼治标准时间的正午是指当太阳横穿格林尼治子午线时(也就是在格林尼治上空最高点时)的时间。 UTC(U...

    robin 评论0 收藏0
  • java常见类API第二部分

    摘要:类是日期时间格式化子类的抽象类,我们通过这个类可以帮我们完成日期和文本之间的转换也就是可以在对象与对象之间进行来回转换。构造方法由于为抽象类,不能直接使用,所以需要常用的子类。 day01【Object类、常用API】 主要内容 Object类 Date类 DateFormat类 Calendar类 System类 StringBuilder类 包装类 教学目标 -[ ] 能够说出...

    maybe_009 评论0 收藏0

发表评论

0条评论

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