当前浏览器不支持canvas,请更换浏览器后再试

js 各种时间格式的转换

js 各种时间格式的转换

注意:UTC时间不等于GMT时间

GMT:Greenwich Mean Time
格林尼治标准时间。这是以英国格林尼治天文台观测结果得出的时间,这是英国格林尼治当地时间,这个地方的当地时间过去被当成世界标准的时间。

UT:Universal Time 世界时。根据原子钟计算出来的时间。

UTC:Coordinated Universal Time
协调世界时。因为地球自转越来越慢,每年都会比前一年多出零点几秒,每隔几年协调世界时组织都会给世界时+1秒,让基于原子钟的世界时和基于天文学(人类感知)的格林尼治标准时间相差不至于太大。并将得到的时间称为UTC,这是现在使用的世界标准时间。

协调世界时不与任何地区位置相关,也不代表此刻某地的时间,所以在说明某地时间时要加上时区

也就是说GMT并不等于UTC

作者:杨赟 链接:https://www.zhihu.com/question/27052407/answer/1440913686
来源:知乎 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

获取时间

 1               var newDate = new Date();
 2             
 3             console.log('newDate',newDate)
 4             
 5             //Fri Mar 18 2022 14:24:45 GMT+0800(中国标准时间)
 6             
 7             1.把 Date 对象的日期部分转换为可读字符串:
 8             
 9             console.log('toDateString',newDate.toDateString());
10             
11             // Fri Mar 18 2022
12             
13             2.根据格林威治时间 (GMT) 把 Date 对象转换为字符串(需注意的是)
14             
15             console.log('toGMTString',newDate.toGMTString());
16             
17             // Fri,18 Mar 2022 06:24:45 GMT
18             
19             不建议使用,因为此日期会在转换为字符串之前由本地时区转换为 GMT 时区。
20             
21             例如:传入具体时间
22             
23             var localDate=new Date('July 21, 1983 01:15:00')
24             
25             console.log(localDate.toGMTString())
26             
27             // Wed, 20 Jul 1983 17:15:00 GMT
28             
29             输出的时间会和传入的时间有时差
30             
31             3.使用 ISO 标准返回 Date 对象的字符串格式:
32             
33             console.log('toISOString',newDate.toISOString());
34             
35             // 2022-03-18T06:24:45.061Z
36             
37             
38             4.将 Date 对象转换为字符串,并格式化为 JSON 数据格式。
39             
40             console.log('toJSON',newDate.toJSON());
41             
42             // 2022-03-18T06:24:45.061Z
43             
44             5.根据本地时间把 Date 对象的日期部分转换为字符串:
45             
46             console.log('toLocaleDateString',newDate.toLocaleDateString());
47             
48             // 2022/3/18
49             
50             6.根据本地时间把 Date 对象转换为字符串:
51             
52             console.log('toLocaleString',newDate.toLocaleString());
53             
54             // 2022/3/18 下午2:24:45
55             
56             7.根据本地时间把 Date 对象的时间部分转换为字符串:
57             
58             console.log('toLocaleTimeString',newDate.toLocaleTimeString());
59             
60             // 下午2:24:45
61             
62             8. Date 对象转换为字符串。
63             
64             console.log('toString',newDate.toString());
65             
66             // Fri Mar 18 2022 14:24:45 GMT+0800(中国标准时间)
67             
68             9.把 Date 对象的时间部分转换为字符串:
69             
70             console.log('toTimeString',newDate.toTimeString());
71             
72             // 14:24:45 GMT+0800(中国标准时间)
73             
74             10.根据世界时 (UTC) 把 Date 对象转换为字符串:
75             
76             console.log('toUTCString',newDate.toUTCString());
77             
78             //  Fri Mar 18 2022 06:24:45 GMT

 

日期转时间戳

 1 var date = new Date(); // 当前时间
 2 console.log('date',date)
 3 
 4 三种方法:
 5 var time1 = date.getTime();
 6 var time2 = date.valueOf();
 7 var time3 = Date.parse(date);
 8 
 9 console.log('time1',time1)
10 console.log('time2',time2)
11 console.log('time3',time3)

 注意:如果是用JSON格式的时间去转换时间戳的话,获取的时间有相差

1         var date =new Date('2022-03-16T16:00:00.000Z'); // 当前时间
2         console.log('date',date)
3         var time1 = date.getTime();
4         var time2 = date.valueOf();
5         var time3 = Date.parse(date);
6         console.log('time1',time1)
7         console.log('time2',time2)
8         console.log('time3',time3)    

 

时间戳转日期

 1 function add0(m){return m<10?'0'+m:m }
 2 function format(shijianchuo)
 3 {
 4 //shijianchuo是整数,否则要parseInt转换
 5 var time = new Date(shijianchuo); //时间戳为10位需*1000,时间戳为13位的话不需乘1000
 6 var y = time.getFullYear();
 7 var m = time.getMonth()+1;
 8 var d = time.getDate();
 9 var h = time.getHours();
10 var mm = time.getMinutes();
11 var s = time.getSeconds();
12 return y+'-'+add0(m)+'-'+add0(d)+' '+add0(h)+':'+add0(mm)+':'+add0(s);
13 }

但是如果是‘2022-03-16T16:00:00.000Z’这种时间格式的话,上面那种方式获取的时间有误
可以试试这种方法

1       var time = '2022-03-16T16:00:00.000Z'
2       time = time.replace(/-/, '年')
3       time = time.replace(/-/, '月')
4       time = time.replace(/T/, '日')
5       let times = time.split('.')
6       console.log(times[0])
7       //2022年03月16日16:00:00

如果是vue2的项目的话,你可以封装一个过滤器

 1 // 封装项目中需要使用到的过滤器
 2 import moment from 'moment'
 3 // 1.时间日期过滤器
 4 // 参数说明:不管是否传递了参数,都会有一个默认参数,就是管道符前面的数据
 5 // 意味着用户参数从参数列表的第二个开始
 6 export const dateFormat = (data, spe = '-') => {
 7   return moment(data).format('YYYY-MM-DD HH:mm:ss')
 8 }
 9 引入
10 import { dateFormat } from '@/utils/myfilters.js'
11 定义
12 filters: {
13     dateFormat
14   },
15 使用
16 <div class="time">{{currentUser.date | dateFormat}}</div>
还有一种方法,就是用dayjs库,具体详情可以去官网上看
附上官网https://dayjs.fenxianglu.cn/
posted @ 2024-02-21 14:34  高亮uncle  阅读(176)  评论(0编辑  收藏  举报