一文学会用 JavaScript 中的日期 Date 类型 (javascript红皮书二刷 - Ch5.3 Date类型)

获取 当前或某个日期

使用 new Date() 就可以构造当前日期, 如下:

var now_date = new Date()
var now_date_simple = Date.now() // ES5 新增简化方法

如果希望获取某一个特定的日期, 在 Date() 构造函数中提供参数就可以获取某个特定时间的日期:

var olympic_date = new Date(2008, 8) // 即获取一个 2008年8月 的日期数据

获取 日期数据中的年份、月份、小时等

使用 setget 系列的函数可以获取日期中的特定数据,如下:

spacial_date.setFullYear(2008)
spacial_date.getFullYear() // 2008

spacial_date.setMonth(0)
spacial_date.getMonth() // 1月, 月份是 0 ~ 11

spacial_date.setDate(31)
spacial_date.getDate() // 日期是 1 ~ 31

spacial_date.setDay(0)
spacial_date.getDay() // 周一, 星期是 0 ~ 6

spacial_date.setHours(23)
spacial_date.getHours() // 小时 0 ~ 23, 如果超出23则会加日期

spacial_date.setMinutes(59)
spacial_date.getMinutes() // 分钟 0 ~ 59, 超出加小时

spacial_date.setSeconds(59)
spacial_date.getSeconds() // 秒数 0 ~ 59, 同上 ⬆️

spacial_date.setMilliseconds(2)
spacial_date.getMilliseconds() // 毫秒 0 ~ 999, 同上 ⬆️

日期对象 的实现方式

通过这个方法可以获得一个很大的数字, 这代表了 1970年1月1日 到现在过的毫秒数, Date 对象就是这样存储了日期数据:

var time = now_date.getTime()

计算两个日期间的 天数

理解了上面 👆 的代码, 你可以使用这行代码获得 两个日期之间过了多少毫秒

var start_time = Date(2008, 8)
var end_time = new Date()

var differ = end_time - start_time

得到了毫秒, 也就可以推出相差的 小时 & 分钟 了:

var seconds = differ / 1000
var minutes = seconds / 60
var hours = minutes / 60
var days = hours / 24

计算两个日期间的 月数

按照上面的方法也可以计算相差几个月, 但是会变得麻烦起来, 另一个思路 是通过上上面的 👆 获取年月份来进行计算:

var differ_year = end_time.getFullYear() - start_time.getFullYear()
var differ_month = end_time.getMonth() - start_time.getMonth()

var real_differ_month = differ_year * 12 + differ_month // 正确的数值 🌿

更多关于数值、字符串的技巧

JS 中的 Date 最早来自包 java.util.Date, 利用上面的实例方法配合 JS 的数值、字符串转换技巧, 你可以针对需求进行特殊的操作, 例如:

  • 将日期转换成一种特定格式输出。
  • 根据日期之间的差, 显示出 刚刚, 3分钟前, 2小时前 这样的内容。
  • 利用日期, 获取运行两个函数之间 经过的毫秒

您可以根据自己的情况深入了解~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值