击右上方红色按钮关注“web秀”,让你真正秀起来
任何事情都离不开时间,太阳每天升起的时间,每天你上班的时间,中午吃饭时间等等。在编程生涯中,无时无刻都有一个时间来引导,如数据创建时间(createTime),更新时间(updateTime)等。今天来说说JavaScript的Date对象。
var date = new Date();
这时的时间是当前时间。
那么Date都可以用什么来作为参数呢?
1、Date对象可以使用指定时间到1970年1月1日00:00:00 UTC的毫秒数做参数。
JavaScript中Date对象的那些事儿
看到上面的结果是不是有点奇怪,当参数为0时返回的不应该是1970年1月1日00:00:00吗?这里应该是使用了格林尼治标准时间作为计时标准,中国的时间比格林威治标准时间快8个小时,所以就是8点,而不是0点啦。(突然想到周董的一段歌词,“我占据格林威治守候着你,在时间标准起点回忆过去,你却在永夜了的极地旅行”,格林威治是世界计算时间和地理经度的起点,但是现在GMT时间已经不再被科学界确定,还有一个最接近GMT的世界时间标准,就是UTC啦)
2、参数也可以是(年,月,日,时,分,秒),其中至少需要两个整数,否则就会被当做1中例子里的毫秒数了。
这里的月份是0~11,所以下面的例子月份为5时 June六月
JavaScript中Date对象的那些事儿
当然,这里的参数也可以是负数,就表示相对当前设定时间扣掉的时间。比如下图第一个例子,月份使用了负数,于是就从2018年1月1日为基准,扣掉五个月,变为了2018年8月
JavaScript中Date对象的那些事儿
3、我们再看看0,1,-1这三个特殊数字做参数的情况。如果年份使用0,则表示的是1900年,为负数就变成了公元前。
JavaScript中Date对象的那些事儿
4、当然,除了整数,还可以用日期的字符串作为参数
JavaScript中Date对象的那些事儿
任意搭配都可以得到正确的时间,棒棒哒!
Date对象中有很多方法,这里我只挑一些常用的来说下。
1、Date() 返回当前的时间
JavaScript中Date对象的那些事儿
无论你在中间加什么参数,永远返回当前时间
2、getDate() 返回指定时间的某一天(1~31)
getDay() 返回指定时间的星期数(0~6)
getMonth() 返回指定时间的月份(0~11)
getFullYear() 返回指定时间的四位数年份
getHours() 返回指定时间的小时(0~23)
getMinutes() 返回指定时间的分钟数(0~59)
getSeconds() 返回指定时间的秒数(0~59)
getMilliseconds() 返回指定时间的毫秒数(0~999)
JavaScript中Date对象的那些事儿
3、getTime() 返回1970年1月1日00:00:00到指定时间的毫秒数,就是UNIX时间数的1000倍
JavaScript中Date对象的那些事儿
也就是说,UNIX时间和时间字符串相互转换可以这样
JavaScript中Date对象的那些事儿
除了getTime(),将时间字符串转换成毫秒数的方法还有+Date()、Number(Date)和Date.parse()
Date()和new Date()
上面的例子里有用到Date()和new Date(),返回结果的状态也是不同的,在这里总结一下。,Date()无论有没有参数都是返回的当前时间的字符串,而new Date()会根据参数返回对应时间的字符串
使用Date()对象的一个简单的应用当然就是写日历了~
首先,我们需要判断当前月份的第一天是星期几
var date = new Date(); var year = date.getFullYear(); var month = date.getMonth(); var firstDay, getFirstDay; function getFirstDay (year, month) { firstDay = new Date(year, month, 1); getFirstDay = firstDay.getDay(); }
然后再判断当前月份的天数。选用的办法是使用当前月份下个月的1日的时间减去1个小时,这样就回到了当前月份最后一天,再获取当前日期即可。
function getMonthDays (year, month) { var nextMonth = new Date(year, month + 1, 1), getMonthDays; nextMonth.setHours(nextMonth.getHours() - 1); getMonthDays = nextMonth.getDate(); }
剩下的就是将数据填充到表格里就可以啦~
但是日历并不只能看当前月份,还可以查前一个月后一个月,那么只需要加两个按钮,点击后月份减1或加1即可。
具体代码在下面~
https://github.com/yanagao/Date.git
1970年的元旦
众所周知,所有的编程语言都是要从1970年1月1日开始计算时间,这个时间是有什么特殊的含义吗?在1970年的元旦0点0分0秒到底发生了什么?
上面我们提到了一个UNIX时间,就是指从1970年1月1日0时0分0秒起至现在的总秒数。我们都知道,系统有32位也有64位,那么如果把UNIX时间用32位二进制数表示,只能够表示到2147483647秒,也就是到Tue Jan 19 2038 11:14:07 这个时间就是极限了,超过这个时间,就会变成负数,系统就挂了。在以前那个只有32位操作系统的年代,可能觉得38年之前就会有解决办法吧(⊙﹏⊙)b。年初的时候流传了iPhone变砖的方法,如果你把iPhone的系统时间调到1970年1月1日,重启手机就变砖了,不舍得用自己手机试验的同学纷纷去了苹果体验店。有网友就猜测,因为中国在东8区,比格林威治时间快8个小时,也就是说北京时间1970年1月1日00:00:00对应的是1969年12月31日16:00:00,UNIX时间为负,所以手机变砖,但是没法证实这个猜测的正确性┑( ̄Д  ̄)┍。
现在的操作系统大部分都为64位,可以表示至少到263,经过各种不严密计算,可以算出64位二进制至少可以表示2924.7亿年,应该就不用担心系统挂掉的问题了┑( ̄Д  ̄)┍。
喜欢小编的点击关注,了解更多知识!
构建的应用程序的时候都会带有日期时间组件,无论是资源的创建日期还是活动的时间戳。在本文中,我将分享如何在JavaScript中以各种格式获取当前日期。
const date = new Date();
该Date对象包含一个Number,表示从新纪元(即1970年1月1日)起经过的毫秒数。你可以将日期字符串传递给Date构造函数以创建指定日期的对象:
const date = new Date('Jul 12 2011');
要获取当前年份,可以使用对象的getFullYear()方法。getFullYear()方法在Date构造函数中返回指定日期的年份:
const currentYear = date.getFullYear();
console.log(currentYear); //2020
同样,有一些方法可以获取当月的当前日期和当前的月份:
const today = date.getDate();
const currentMonth = date.getMonth() + 1;
该getDate()方法返回每月的当前日期(1-31)。使用getMonth()方法返回指定日期的月份,需要注意的一点是,该方法返回0索引值(0-11),其中0表示一月,11表示十二月。因此,加1可以使月份的值标准化。
now()是Date对象的静态方法。它以毫秒为单位的值返回,该值表示从纪元以来所经过的时间。你可以将now()方法返回的毫秒数传递给Date构造函数以实例化新Date对象:
const timeElapsed = Date.now();
const today = new Date(timeElapsed);
你可以使用Date对象的方法将日期格式化为多种格式(GMT,ISO等)。该toDateString()方法以我们可读的格式返回日期:
today.toDateString(); // "Sun Jun 16 2020"
toISOString()返回遵循ISO 8601扩展格式的日期:
today.toISOString(); // "2020-06-16T08:30:00.000Z"
toUTCString()以UTC时区格式返回日期:
today.toUTCString(); // "Sat, 16 Jun 2020 08:30:00 GMT"
toLocaleDateString()以地区区时的格式返回日期:
today.toLocaleDateString(); // "6/16/2020"
除了上面提到的格式外,你的应用程序可能具有不同的数据格式。它可以是yy/dd/mm或yyyy-dd-mm格式,或者类似的格式。为了解决这个问题,最好创建一个可重用的函数,以便可以在多个项目中使用它。因此,接下来,让我们创建一个实用程序函数,该函数将以函数参数中指定的格式返回日期:
const today = new Date();
function formatDate(date, format) {
//
}
formatDate(today, 'mm/dd/yy');
你需要使用参数中传递格式字符串中的月份,日期和年份分别替换字符串“ mm”,“ dd”,“ yy”。然后,使用replace(),如下所示的方法:
format.replace('mm', date.getMonth() + 1);
但是,这将导致很多methods连接在一起,并且会让我们尝试把函数变得更灵活更适合我们的项目时产生麻烦:
.replace('yy', date.getFullYear())
.replace('dd', date.getDate());
然后可以使用正则表达式代替methods来连接methods replace()。首先创建一个对象,该对象将代表子字符串的键值对及其各自的值:
const formatMap = {
mm: date.getMonth() + 1,
dd: date.getDate(),
yy: date.getFullYear().toString().slice(-2),
yyyy: date.getFullYear()
};
接下来,使用正则表达式匹配并替换字符串:
formattedDate = format.replace(/mm|dd|yy|yyy/gi, matched => map[matched]);
完整的功能及代码如下所示:
function formatDate(date, format) {
const map = {
mm: date.getMonth() + 1,
dd: date.getDate(),
yy: date.getFullYear().toString().slice(-2),
yyyy: date.getFullYear()
}
return format.replace(/mm|dd|yy|yyy/gi, matched => map[matched])
}
你还可以在函数中添加格式化时间戳的功能。
你现在对DateJavaScript 中的对象有更好的了解。你也可以使用其他第三方库(例如datesj和)moment来处理应用程序中的日期。
ate 对象
Date 对象用于处理日期与实际。
创建 Date 对象: new Date().
以上四种方法同样可以创建 Date 对象:
var d = new Date();
var d = new Date(milliseconds);
var d = new Date(dateString);
var d = new Date(year, month, day, hours, minutes, seconds, milliseconds);
Date 对象属性
属性 | 描述 |
---|---|
constructor | 返回对创建此对象的 Date 函数的引用。 |
prototype | 使您有能力向对象添加属性和方法。 |
Date 对象方法
方法 | 描述 |
---|---|
getDate() | 从 Date 对象返回一个月中的某一天 (1 ~ 31)。 |
getDay() | 从 Date 对象返回一周中的某一天 (0 ~ 6)。 |
getFullYear() | 从 Date 对象以四位数字返回年份。 |
getHours() | 返回 Date 对象的小时 (0 ~ 23)。 |
getMilliseconds() | 返回 Date 对象的毫秒(0 ~ 999)。 |
getMinutes() | 返回 Date 对象的分钟 (0 ~ 59)。 |
getMonth() | 从 Date 对象返回月份 (0 ~ 11)。 |
getSeconds() | 返回 Date 对象的秒数 (0 ~ 59)。 |
getTime() | 返回 1970 年 1 月 1 日至今的毫秒数。 |
getTimezoneOffset() | 返回本地时间与格林威治标准时间 (GMT) 的分钟差。 |
getUTCDate() | 根据世界时从 Date 对象返回月中的一天 (1 ~ 31)。 |
getUTCDay() | 根据世界时从 Date 对象返回周中的一天 (0 ~ 6)。 |
getUTCFullYear() | 根据世界时从 Date 对象返回四位数的年份。 |
getUTCHours() | 根据世界时返回 Date 对象的小时 (0 ~ 23)。 |
getUTCMilliseconds() | 根据世界时返回 Date 对象的毫秒(0 ~ 999)。 |
getUTCMinutes() | 根据世界时返回 Date 对象的分钟 (0 ~ 59)。 |
getUTCMonth() | 根据世界时从 Date 对象返回月份 (0 ~ 11)。 |
getUTCSeconds() | 根据世界时返回 Date 对象的秒钟 (0 ~ 59)。 |
getYear() | 已废弃。 请使用 getFullYear() 方法代替。 |
parse() | 返回1970年1月1日午夜到指定日期(字符串)的毫秒数。 |
setDate() | 设置 Date 对象中月的某一天 (1 ~ 31)。 |
setFullYear() | 设置 Date 对象中的年份(四位数字)。 |
setHours() | 设置 Date 对象中的小时 (0 ~ 23)。 |
setMilliseconds() | 设置 Date 对象中的毫秒 (0 ~ 999)。 |
setMinutes() | 设置 Date 对象中的分钟 (0 ~ 59)。 |
setMonth() | 设置 Date 对象中月份 (0 ~ 11)。 |
setSeconds() | 设置 Date 对象中的秒钟 (0 ~ 59)。 |
setTime() | setTime() 方法以毫秒设置 Date 对象。 |
setUTCDate() | 根据世界时设置 Date 对象中月份的一天 (1 ~ 31)。 |
setUTCFullYear() | 根据世界时设置 Date 对象中的年份(四位数字)。 |
setUTCHours() | 根据世界时设置 Date 对象中的小时 (0 ~ 23)。 |
setUTCMilliseconds() | 根据世界时设置 Date 对象中的毫秒 (0 ~ 999)。 |
setUTCMinutes() | 根据世界时设置 Date 对象中的分钟 (0 ~ 59)。 |
setUTCMonth() | 根据世界时设置 Date 对象中的月份 (0 ~ 11)。 |
setUTCSeconds() | setUTCSeconds() 方法用于根据世界时 (UTC) 设置指定时间的秒字段。 |
setYear() | 已废弃。请使用 setFullYear() 方法代替。 |
toDateString() | 把 Date 对象的日期部分转换为字符串。 |
toGMTString() | 已废弃。请使用 toUTCString() 方法代替。 |
toISOString() | 使用 ISO 标准返回字符串的日期格式。 |
toJSON() | 以 JSON 数据格式返回日期字符串。 |
toLocaleDateString() | 根据本地时间格式,把 Date 对象的日期部分转换为字符串。 |
toLocaleTimeString() | 根据本地时间格式,把 Date 对象的时间部分转换为字符串。 |
toLocaleString() | 据本地时间格式,把 Date 对象转换为字符串。 |
toString() | 把 Date 对象转换为字符串。 |
toTimeString() | 把 Date 对象的时间部分转换为字符串。 |
toUTCString() | 根据世界时,把 Date 对象转换为字符串。 |
UTC() | 根据世界时返回 1970 年 1 月 1 日 到指定日期的毫秒数。 |
valueOf() | 返回 Date 对象的原始值。 |
*请认真填写需求信息,我们会在24小时内与您取得联系。