1.获取时间
- 使用new Date()来获取时间对象,默认是当前时间
- 时间对象可以调用一系列方法来获取其对应的到年月日,时分秒等(返回的数据类型是number类型)
- 注意:月份是以0开始的,即0代表一月份
<script>
var date = new Date()
console.log(date)
console.log(date.getFullYear())
console.log(date.getMonth())
console.log(date.getDate())
console.log(date.getDay())
console.log(date.getHours())
console.log(date.getMinutes())
console.log(date.getSeconds())
console.log(date.getTime())
console.log(typeof date.getHours())
console.log(typeof date.getTime())
console.log(date.toLocaleString())
console.log(date.toString())
</script>
2.设置日期
- 在new Date()后可以通过一系列的方法来修改时间日期
- 可以修改年月日时分秒,修改与获取的API相似,只要将get替换成set即可
- 注意:月份是以0开始的,即0代表一月份
<script>
var date = new Date()
console.log(date.toLocaleString())
date.setFullYear(2020)
date.setMonth(1)
date.setDate(1)
console.log(date.toLocaleString())
date.setHours(15)
date.setMinutes(16)
date.setSeconds(17)
console.log(date.toLocaleString())
date.setTime(1576046149784)
console.log(date.toLocaleString())
</script>
<script>
var date = new Date()
console.log(date.toLocaleString())
var target_date = date.getDate() + 16
console.log(target_date)
date.setDate(target_date)
console.log(date.toLocaleString())
</script>
3.时间初始化
- 使用new Date()创建时间对象时,可以传入字符串来设定对应的时间,但是字符串的格式有兼容问题
new Date('2024-03-24')
new Date('2024,03,24')
new Date('2024/03/24')
var dateStr = "2013-3-15 20:20:03"
var reg = /-/g
var dateFormat = dateStr.replace(reg,"/")
4.封装格式化时间函数
- 通过原生的方式获取到时间对象对应的年月日时分秒,进行组合后返回
transformDateMethod(dateobj,format=''){
var year = dateobj.getFullYear()
var month = dateobj.getMonth()+1
var date = dateobj.getDate()
var hours = dateobj.getHours()
var minutes = dateobj.getMinutes()
var seconds = dateobj.getSeconds()
var day = dateobj.getDay()
var day_str = ''
switch(day){
case 0: day_str = '星期日';break;
case 1: day_str = '星期一';break;
case 2: day_str = '星期二';break;
case 3: day_str = '星期三';break;
case 4: day_str = '星期四';break;
case 5: day_str = '星期五';break;
case 6: day_str = '星期六';break;
default: break;
}
if(hours < 10){
hours = '0'+hours
}
if(minutes < 10){
minutes = '0'+minutes
}
if(seconds < 10){
seconds = '0'+seconds
}
if(format == ''){
return `${year}年${month}月${date}日 ${hours}:${minutes}:${seconds} ${day_str}`
}else{
format = format.replace('YY',year)
format = format.replace('MM',month)
format = format.replace('DD',date)
format = format.replace('hh',hours)
format = format.replace('mm',minutes)
format = format.replace('ss',seconds)
format = format.replace('Day',day_str)
return format
}
}
5.时间插件moment.js
- moment.js封装了大量的时间方法,无论是兼容性还是效率都比原生js强
- 推荐使用Day.js,官方文档
- 引入插件:浏览器引入
<script src="https://cdn.bootcss.com/moment.js/2.24.0/moment.min.js"></script>
npm install moment --save
import moment from 'moment'
- 设置语言:默认情况下,插件使用的是英文,如果想要中文输出(输出星期几),需要引入语文文件(如果是npm环境,则还需要进行声明)
<script src="https://cdn.bootcdn.net/ajax/libs/moment.js/2.29.1/moment.min.js"></script>
<script src="https://cdn.bootcdn.net/ajax/libs/moment.js/2.29.1/locale/zh-cn.min.js"></script>
<script>
var week_day = moment().format('dddd')
console.log(week_day)
</script>
- 格式化时间日期:这个插件最常用的功能就是这个,调用format()方法,通过正则替换的形式输出带有年月日信息的字符串(碰到字符串中的转义字符则替换成对应的数据,普通字符串则原模原样输出)
<script>
console.log(moment().format('YYYY'))
console.log(moment().format('YY'))
console.log(moment().format('Y'))
console.log('**************')
console.log(moment().format('MMMM'))
console.log(moment().format('MMM'))
console.log(moment().format('MM'))
console.log(moment().format('M'))
console.log('**************')
console.log(moment().format('Do'))
console.log(moment().format('D'))
console.log(moment().format('DD'))
console.log(moment().format('DDD'))
console.log(moment().format('DDDD'))
console.log('**************')
console.log(moment().format('hh'))
console.log(moment().format('h'))
console.log(moment().format('HH'))
console.log(moment().format('H'))
console.log('**************')
console.log(moment().format('mm'))
console.log(moment().format('m'))
console.log('**************')
console.log(moment().format('ss'))
console.log(moment().format('s'))
console.log(moment().format('x'))
console.log('**************')
console.log(moment().format('dddd'))
console.log(moment().format('ddd'))
console.log(moment().format('e'))
console.log(moment().format('E'))
console.log('**************')
console.log(moment().format('a'))
console.log(moment().format('A'))
Moment('2023-01-01').format('DDDD')
Moment('2023-01-01').format('DDD')
Moment('2023-02-19').format('Q')
</script>
- 输出相对时间fromNow():输出目标时间与当前时间的相对时间,moment.js会根据时间长度自动换算时间单位
<script>
console.log(moment(new Date().setFullYear(2008)).fromNow())
console.log(moment(new Date().setMonth(8)).fromNow())
var before_10day = new Date()
before_10day.setDate(before_10day.getDate() - 10)
console.log(moment(before_10day).fromNow())
var before_10hours = new Date()
before_10hours.setHours(before_10hours.getHours() - 10)
console.log(moment(before_10hours).fromNow())
</script>
- 时长单位转换:将两个时间的间隔(单位默认毫秒),转换成其他单位进行输出(秒,分钟,小时,天),这里用分钟做演示,其他时间单位的方法自查文档
<script>
var duration = new Date('2021-07-23 12:32:30').getTime() - new Date('2021-07-23 12:30:00').getTime()
var $duration = moment.duration(duration)
var minutes_num = $duration.asMinutes()
var minutes_now = $duration.minutes()
</script>
moment().format('MMMM Do YYYY, h:mm:ss a');
moment().format('dddd');
moment().format("MMM Do YY");
moment().format('YYYY [escaped] YYYY');
moment().format();
moment("20111031", "YYYYMMDD").fromNow();
moment("20120620", "YYYYMMDD").fromNow();
moment().startOf('day').fromNow();
moment().endOf('day').fromNow();
moment().startOf('hour').fromNow();
moment().subtract(10, 'days').calendar();
moment().subtract(6, 'days').calendar();
moment().subtract(3, 'days').calendar();
moment().subtract(1, 'days').calendar();
moment().calendar();
moment().add(1, 'days').calendar();
moment().add(3, 'days').calendar();
moment().add(10, 'days').calendar();
moment.locale();
moment().format('LT');
moment().format('LTS');
moment().format('L');
moment().format('l');
moment().format('LL');
moment().format('ll');
moment().format('LLL');
moment().format('lll');
moment().format('LLLL');
moment().format('llll');
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了