美文网首页
js关于时间的那些个事儿

js关于时间的那些个事儿

作者: KlivitamJ | 来源:发表于2018-10-30 20:47 被阅读39次

昨天看到一则消息,著名前央视大咖李咏去世的消息遍布全网络。所有人的关注点都在李咏去世这件事儿本身上面,但是我关注的点在于:出事儿起因是因为李咏生前比较爱喝酒。说到喝酒呢?本身喝酒是中华民族的一项传统习俗,基本每个中国人都会喝酒,无论是在春节还是很多场合里面酒基本就是调节气氛最好的催化剂。但是今年二月份的时候,自然曾经发了一篇文章称:喝酒可能会加大患癌症的几率。当然我也看了一下这篇文章,讲的很高深,听不懂。但是知道了喝酒不对这件事儿。

最近在开发的时候遇到了很多奇奇怪怪的需求,主要都跟time相关。我在这里呢?就着重对js里面time的一些使用技巧做一下总结吧。


时钟

一、 date的格式化

Date 对象用于处理日期和时间。

可以通过 new 关键词来定义 Date 对象。以下代码定义了名为 myDate 的 Date 对象:

let date = new Date(); // Tue Oct 29 2018 21:09:05 GMT+0800 (中国标准时间)

就像上面这种操作。但是Tue Oct 29 2018 21:09:05 GMT+0800这种时间格式对于一个用户来说是不直观的,要把其进行处理,使其直观的展示给用户进行观看、查阅或者是给数据库进行存储。

1、 Date格式化成时间戳

时间戳是程序开发经常会使用的一种存储方式,这里我们可以直接进行转换;

let date = new Date(); // Tue Oct 29 2018 21:09:05 GMT+0800 (中国标准时间)
let timestamp =Date.parse(date); // 1540818545000

2、 时间戳转化成Date

前面说到了Date对象转化成时间戳,这里也顺便说一下时间戳转化Date对象吧。

let date = new Date(1540818545000); //Mon Oct 29 2018 21:09:05 GMT+0800 (中国标准时间)

3、 Date格式化成年月日

很多需求里面都想要把时间转化成xxxx年xx月xx日、xxxx-xx-xx等等操作。因为这样的格式会比较直观。
来看下面一段代码:

let date = new Date();
console.log("year:",date.getFullYear()); // 2018
console.log("month:",date.getMonth()+1); // 10
console.log("day:",date.getDate()); // 29
console.log("hours:",date.getHours()); // 21
console.log("minute:",date.getMinutes()); // 9
console.log("second:",date.getSeconds()); // 5
console.log("millsecond:",date.getMilliseconds()); // 0

这里值得注意的是:

  • month是从0开始计数的,所以需要加上1
  • 获取天数是getDate()而不是getDay().

好了我讲完整的代码展示出来吧:

      function formatDate () {
        let date = new Date()
        let y = date.getFullYear()
        let m = date.getMonth() + 1
        m = m < 10 ? ('0' + m) : m
        let d = date.getDate()
        d = d < 10 ? ('0' + d) : d
        let h = date.getHours()
        h = h < 10 ? ('0' + h) : h
        let minute = date.getMinutes()
        let second = date.getSeconds()
        minute = minute < 10 ? ('0' + minute) : minute
        second = second < 10 ? ('0' + second) : second
        return y + '-' + m + '-' + d + ' ' + h + ':' + minute + ':' + second
      }

4、 年月日转化成Date()对象.

操作其实很简单:

let date = new Date("2018-01-01"); // Mon Jan 01 2018 00:00:00 GMT+0800 (中国标准时间)

甚至可以这样:

let date = new Date("2018-01"); // Mon Jan 01 2018 08:00:00 GMT+0800 (中国标准时间)
let date5 = new Date("2018-01-01 10:20:25"); // Mon Jan 01 2018 10:20:25 GMT+0800 (中国标准时间)

这里值得注意的就是,如果这样传值:

let date2 = new Date("2018年1月1日"); // Invalid Date

如果你要弄的话 还是采用xxxx-xx-xx hh:mm:ss的格式才能被认同。

二、 时间的一些高级操作:

1、 获取明天

function getLastDay(){
  let date = new Date();//获取当前时间
  date.setDate(date.getDate()+1);//设置天数 +1 天
  return formatDate(date);
}

2、 本周一的时间

function getWeekFristDay(){
  let nowDate = new Date();
  let weekFirstDay = new Date(nowDate - (nowDate.getDay() - 1) * 86400000);// Mon Oct 29 2018 21:09:05 GMT+0800 (中国标准时间)
  return formatDate(weekFirstDay);
}

3、 获取一周前时间

function getWeekLater(){
  let now = new Date();
  let date = new Date(now.getTime() - 7 * 24 * 3600 * 1000);
  return formatDate(date);
}

4、 两个日期相差的天数

function dateDifference(sDate1, sDate2) {
   let sDate1 = Date.parse(sDate1);
   let sDate2 = Date.parse(sDate2);
   let dateSpan = sDate2 - sDate1;
   dateSpan = Math.abs(dateSpan);
   iDays = Math.floor(dateSpan / (24 * 3600 * 1000));
   return iDays 
}

三、 Date对象的全部方法:

getDate() 从 Date 对象返回一个月中的某一天 (1 ~ 31)。
getDay() 从 Date 对象返回一周中的某一天 (0 ~ 6)。
getMonth() 从 Date 对象返回月份 (0 ~ 11)。
getFullYear() 从 Date 对象以四位数字返回年份。
getYear() 请使用 getFullYear() 方法代替。
getHours() 返回 Date 对象的小时 (0 ~ 23)。
getMinutes() 返回 Date 对象的分钟 (0 ~ 59)。
getSeconds() 返回 Date 对象的秒数 (0 ~ 59)。
getMilliseconds() 返回 Date 对象的毫秒(0 ~ 999)。
getTime() 返回 1970 年 1 月 1 日至今的毫秒数。
getTimezoneOffset() 返回本地时间与格林威治标准时间 (GMT) 的分钟差。
getUTCDate() 根据世界时从 Date 对象返回月中的一天 (1 ~ 31)。
getUTCDay() 根据世界时从 Date 对象返回周中的一天 (0 ~ 6)。
getUTCMonth() 根据世界时从 Date 对象返回月份 (0 ~ 11)。
getUTCFullYear() 根据世界时从 Date 对象返回四位数的年份。
getUTCHours() 根据世界时返回 Date 对象的小时 (0 ~ 23)。
getUTCMinutes() 根据世界时返回 Date 对象的分钟 (0 ~ 59)。
getUTCSeconds() 根据世界时返回 Date 对象的秒钟 (0 ~ 59)。
getUTCMilliseconds() 根据世界时返回 Date 对象的毫秒(0 ~ 999)。
parse() 返回1970年1月1日午夜到指定日期(字符串)的毫秒数。
setDate() 设置 Date 对象中月的某一天 (1 ~ 31)。
setMonth() 设置 Date 对象中月份 (0 ~ 11)。
setFullYear() 设置 Date 对象中的年份(四位数字)。
setYear() 请使用 setFullYear() 方法代替。
setHours() 设置 Date 对象中的小时 (0 ~ 23)。
setMinutes() 设置 Date 对象中的分钟 (0 ~ 59)。
setSeconds() 设置 Date 对象中的秒钟 (0 ~ 59)。
setMilliseconds() 设置 Date 对象中的毫秒 (0 ~ 999)。
setTime() 以毫秒设置 Date 对象。
setUTCDate() 根据世界时设置 Date 对象中月份的一天 (1 ~ 31)。
setUTCMonth() 根据世界时设置 Date 对象中的月份 (0 ~ 11)。
setUTCFullYear() 根据世界时设置 Date 对象中的年份(四位数字)。
setUTCHours() 根据世界时设置 Date 对象中的小时 (0 ~ 23)。
setUTCMinutes() 根据世界时设置 Date 对象中的分钟 (0 ~ 59)。
setUTCSeconds() 根据世界时设置 Date 对象中的秒钟 (0 ~ 59)。
setUTCMilliseconds() 根据世界时设置 Date 对象中的毫秒 (0 ~ 999)。
toSource() 返回该对象的源代码。
toString() 把 Date 对象转换为字符串。
toTimeString() 把 Date 对象的时间部分转换为字符串。
toDateString() 把 Date 对象的日期部分转换为字符串。
toGMTString() 请使用 toUTCString() 方法代替。
toUTCString() 根据世界时,把 Date 对象转换为字符串。
toLocaleString() 根据本地时间格式,把 Date 对象转换为字符串。
toLocaleTimeString() 根据本地时间格式,把 Date 对象的时间部分转换为字符串。
toLocaleDateString() 根据本地时间格式,把 Date 对象的日期部分转换为字符串。
UTC() 根据世界时返回 1997 年 1 月 1 日 到指定日期的毫秒数。
valueOf() 返回 Date 对象的原始值。

说在最后

这是我到目前为止,写的最简单的一篇技术文章了。主要是最近项目里面经常会用到这个,当然可能还有些写法我短时间还没有想到。总之 想到了之后会添加上去的。最近突然有点不知道该写什么了,就只好找一个常用的来写了。时间也差不多了,该讲的也差不多了了,锻炼去了。

相关文章

  • js关于时间的那些个事儿

    昨天看到一则消息,著名前央视大咖李咏去世的消息遍布全网络。所有人的关注点都在李咏去世这件事儿本身上面,但是我关注的...

  • JS中关于时间的那点破事儿

    时间似乎是一个永恒的话题,牛顿的时代认识空间和时间都是不变的。尤其牛顿他老人家,到死都坚信宇宙是和谐的,空间和时间...

  • 关于借钱那事儿

    曾经在网上看到一个段子,说某1借钱给某2。一段时间后,1需要急用用钱,就找2要之前借的钱,说得很清楚也极力照顾对方...

  • 过年的那些个事儿

    大年初六,当我浑浑噩噩地过着每一天,毫无准备的从2016跨到2017,当朋友圈里同学晒着她新年开张的毛爷爷,当微信...

  • 我的那些个事儿

    我今年28了,是两个孩子的母亲。刚怀老二的时候,我的丈夫有过不想生的想法,他告诉我说,两个孩子年龄相差太小,担心照...

  • 关于面试的一些个人看法

    关于面试的一些个人看法关于面试的一些个人看法

  • 老天这些个事儿

    这半月来阴雨不断,有时雾蒙弥天,细雨绵绵。有时灰白一片,大雨连连。 但见那乌云周天盖,骤雨施虐,摧尽人间春色,...

  • 小文20171207

    人生一世,遇到些个困难、挫折、失败什么的,简直太稀疏平常的事了。尝试着对自己说:那都不是事儿,是事儿也就烦一会儿,...

  • 关于谢谢那档子事儿

    图片来源:Vfdbkijeroymlermglsgjsgrtutych 的新浪微博 6月15日 宜 睡觉 台风天气...

  • 关于JS模块化时循环加载的那些事儿

    关于JS模块化时循环加载的那些事儿 关于JS模块化的相关知识有很多,一些基本的知识平时都会有注意到,但是在实践中发...

网友评论

      本文标题:js关于时间的那些个事儿

      本文链接:https://www.haomeiwen.com/subject/omegtqtx.html