JS操作时间 - UNIX时间戳的简单介绍(必看篇)


Posted in Javascript onAugust 16, 2017

准备知识

GMT(Greenwich Mean Time) - 格林尼治时间。UTC(Universal Time Code) - 国际协调时间。PST(Pacific Standard Time,太平洋标准时间)。

UTC出现的比GMT时间晚,可以认为UTC时间更加精确,不过它们之间只相差几秒钟。

UTC开始时间为:1970-01-01T00:00:00.000Z(这种时间设置可以一直精确到毫秒,字母T和Z仅仅是一种格式)

UNIX时间戳指的是从1970-01-01T00:00:00.000Z到现在的毫秒数。(1s=1000ms)

本文需要用到的时间规定如下:

机器时间 - UNIX时间戳。(mTime)

人类时间 - 人类可读的各种时间。(hTime)

标准字符串时间 - 1970-01-01T00:00:00.000Z(stdStrTime)

GMT时间 - Tue, 15 Aug 2017 13:58:23 GMT(gmtTime)

需求描述

我们日常生活中要表示时间,方法非常之多,打在屏幕上就是各种字符串,另外我们还要考虑到外国人表示时间的方法。比如下面这些都可以表示某个时间:

2017年8月15日20:51:22

2017.08.15

2017-08-15 AM

6/13/2004

January 12, 2004

Tue May 25 2004 00:00:00 GMT-0700

1970-01-01T00:00:00.000Z

那么问题来了,上面这些时间表示方法格式完全不统一,如果我设计个程序要求某些东西在指定时间运行,我们该怎么表示这个时间呢?在计算机编程中我们一般用一种最标准的时间表示方式:UNIX时间戳。这种时间表示方法精确到毫秒,表示方法唯一,非常适合编程处理。

核心函数

new Date()

参数可以是机器时间,参数为空时表示把当前机器时间传入。返回值是标准字符串时间。

// 参数为空时
var stdStrTime = new Date();
console.log(stdStrTime);
// output: 2017-08-15T14:22:08.385Z
var gmtTime = stdStrTime.toUTCString();
console.log(gmtTime);
// output: Tue, 15 Aug 2017 14:22:08 GMT

// 参数不为空时
var stdStrTime = new Date(1502769188084);
console.log(stdStrTime);
// output: 2017-08-15T03:53:08.084Z
var gmtTime = stdStrTime.toUTCString();
console.log(gmtTime);
// output: Tue, 15 Aug 2017 03:53:08 GMT

转成GMT时间也可以用函数toGMTString(),该方法现在已经不推荐使用。

Date.parse()

参数为标准字符串时间,返回值是对应的机器时间。

var stdStrTime = "2017-08-15T03:53:08.084Z";
var mTime = Date.parse(stdStrTime);
console.log(mTime);
// output: 1502769188084

2个问题

在JS中操作时间,和在其它语言中操作时间原理上相似,核心就是解决2个问题:

把机器时间转成人类时间

把人类时间转成机器时间

得到当前机器时间

console.log(Date.now());
// ouput: 1502802483928

得到当前人类时间

var stdStrTime = new Date();
console.log(now);

上面的代码在Chrome环境中输出雷氏与这样:Tue Aug 15 2017 21:09:46 GMT+0800 (China Standard Time)。在Node.js环境中输出类似与这样:2017-08-15T13:06:34.806Z

给出标准字符串时间转成机器时间

var stdStrTime = "2004-05-25T00:00:00.000Z";
var mTime = Date.parse(humanTime);
console.log(machineTime);
// output: 1085443200000

给出机器时间转成标准字符串时间

var mTime = 1085443200000;
var stdStrTime = new Date(mTime);
console.log(stdStrTime);
// output: 2004-05-25T00:00:00.000Z

参考书籍

JavaScript高级程序设计第三版

以上这篇JS操作时间 - UNIX时间戳的简单介绍(必看篇)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
js获取图片长和宽度的代码
Nov 24 Javascript
ie7+背景透明文字不透明超级简单的实现方法
Jan 17 Javascript
JavaScript字符串对象(string)基本用法示例
Jan 18 Javascript
基于jQuery实现咖啡订单管理简单应用
Feb 10 Javascript
JS实现的自动打字效果示例
Mar 10 Javascript
JavaScript运动框架 多物体任意值运动(三)
May 17 Javascript
Vue.js实现按钮的动态绑定效果及实现代码
Aug 21 Javascript
怎么使用javascript深度拷贝一个数组
Jun 06 Javascript
JS实现的雪花飘落特效示例
Dec 03 Javascript
解决VUE mounted 钩子函数执行时 img 未加载导致页面布局的问题
Jul 27 Javascript
electron踩坑之dialog中的callback解决
Oct 06 Javascript
node.js如何操作MySQL数据库
Oct 29 Javascript
label+input实现按钮开关切换效果的实例
Aug 16 #Javascript
bootstrap modal+gridview实现弹出框效果
Aug 15 #Javascript
vue实现点击图片放大效果
Aug 15 #Javascript
jquery获取链接地址和跳转详解(推荐)
Aug 15 #jQuery
JavaScript获取tr td 的三种方式全面总结(推荐)
Aug 15 #Javascript
全面解析jQuery中的$(window)与$(document)的用法区别
Aug 15 #jQuery
Vue组件通信实践记录(推荐)
Aug 15 #Javascript
You might like
thinkPHP模板引擎用法示例
2016/12/08 PHP
PHP使用finfo_file()函数检测上传图片类型的实现方法
2017/04/18 PHP
拖拉表格的JS函数
2008/11/20 Javascript
IE与firefox下Dhtml的一些区别小结
2009/12/02 Javascript
Js 冒泡事件阻止实现代码
2013/01/27 Javascript
jquery异步跨域访问代码
2013/06/28 Javascript
解析Jquery中如何把一段html代码动态写入到DIV中(实例说明)
2013/07/09 Javascript
点击弹出层外区域关闭弹出层jquery特效示例
2013/08/25 Javascript
JavaScript中创建对象和继承示例解读
2014/02/12 Javascript
js事件绑定快捷键以ctrl+k为例
2014/09/30 Javascript
DOM事件阶段以及事件捕获与事件冒泡先后执行顺序(图文详解)
2015/08/18 Javascript
理解jquery事件冒泡
2016/01/03 Javascript
jQuery基于json与cookie实现购物车的方法
2016/04/15 Javascript
微信小程序 生命周期和页面的生命周期详细介绍
2017/01/19 Javascript
javascript深拷贝的原理与实现方法分析
2017/04/10 Javascript
jQuery中each循环的跳出和结束实例
2017/08/16 jQuery
js 倒计时(高效率服务器时间同步)
2017/09/12 Javascript
Vue全局loading及错误提示的思路与实现
2019/08/09 Javascript
在Vue中使用Echarts可视化库的完整步骤记录
2020/11/18 Vue.js
python实现猜数字游戏(无重复数字)示例分享
2014/03/29 Python
Python网站验证码识别
2016/01/25 Python
利用selenium 3.7和python3添加cookie模拟登陆的实现
2017/11/20 Python
Python设计模式之命令模式简单示例
2018/01/10 Python
wxPython实现文本框基础组件
2019/11/18 Python
使用html5新特性轻松监听任何App自带返回键的示例
2018/03/13 HTML / CSS
Tory Burch英国官方网站:美国时尚生活品牌
2017/12/06 全球购物
俄罗斯在线手表和珠宝商店:AllTime
2019/09/28 全球购物
武汉世纪畅想数字传播有限公司 .NET笔试题
2015/06/13 面试题
在网络中有两台主机A和B,并通过路由器和其他交换设备连接起来,已经确认物理连接正确无误,怎么来测试这两台机器是否连通?如果不通,怎么来判断故障点?怎么排
2014/01/13 面试题
国际会议邀请函范文
2014/01/16 职场文书
调解协议书
2014/04/16 职场文书
员工三分钟演讲稿
2014/08/19 职场文书
2014流动人口计划生育工作总结
2014/12/20 职场文书
党员违纪检讨书
2015/05/05 职场文书
盲山观后感
2015/06/11 职场文书
HTML5页面音频自动播放的实现方式
2021/06/21 HTML / CSS