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 相关文章推荐
animate动画示例(泪奔的小孩)及stop和delay的使用
May 06 Javascript
JavaScript事件处理器中的event参数使用介绍
May 24 Javascript
js左侧三级菜单导航实例代码
Sep 13 Javascript
jquery自定义下拉列表示例
Apr 25 Javascript
在JS数组特定索引处指定位置插入元素
Jul 27 Javascript
js怎么判断flash swf文件是否加载完毕
Aug 14 Javascript
JS拉起或下载app的实现代码
Feb 22 Javascript
JS计算输出100元钱买100只鸡问题的解决方法
Jan 04 Javascript
vue弹窗组件使用方法
Apr 28 Javascript
JSON.stringify()方法讲解
Jan 31 Javascript
Webpack4 使用Babel处理ES6语法的方法示例
Mar 07 Javascript
浅析JavaScript预编译和暗示全局变量
Sep 03 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
落伍首发 php+mysql 采用ajax技术的 省 市 地 3级联动无刷新菜单 源码
2006/12/16 PHP
php用数组返回无限分类的列表数据的代码
2010/08/08 PHP
PHP高级对象构建 多个构造函数的使用
2012/02/05 PHP
SESSION信息保存在哪个文件目录下以及能够用来保存什么类型的数据
2012/06/17 PHP
使用纯php代码实现页面伪静态的方法
2015/07/25 PHP
php图像处理函数imagecopyresampled用法详解
2016/12/02 PHP
PHP实现将多个文件压缩成zip格式并下载到本地的方法示例
2018/05/23 PHP
Laravel重定向,a链接跳转,控制器跳转示例
2019/10/22 PHP
extJs 下拉框联动实现代码
2010/04/09 Javascript
JavaScript中的类(Class)详细介绍
2014/12/30 Javascript
JavaScript 学习笔记之数据类型
2015/01/14 Javascript
JavaScript解八皇后问题的方法总结
2016/06/12 Javascript
最好用的Bootstrap fileinput.js文件上传组件
2016/12/12 Javascript
jquery实现的分页显示功能示例
2019/08/23 jQuery
小程序实现密码输入框
2020/11/16 Javascript
[01:05:40]2014 DOTA2国际邀请赛中国区预选赛 5 23 CIS VS DT第三场
2014/05/24 DOTA
[03:02]生活中的Dendi之野外度假篇
2016/08/09 DOTA
Python中dictionary items()系列函数的用法实例
2014/08/21 Python
Python的高级Git库 Gittle
2014/09/22 Python
利用Python实现图书超期提醒
2016/08/02 Python
Python正则表达式教程之二:捕获篇
2017/03/02 Python
解决Tensorflow使用pip安装后没有model目录的问题
2018/06/13 Python
Pandas数据离散化原理及实例解析
2019/11/16 Python
pytorch构建多模型实例
2020/01/15 Python
Anaconda3中的Jupyter notebook添加目录插件的实现
2020/05/18 Python
python查询MySQL将数据写入Excel
2020/10/29 Python
CSS3中的@keyframes关键帧动画的选择器绑定
2016/06/13 HTML / CSS
CSS3 rgb and rgba(透明色)的使用详解
2020/09/25 HTML / CSS
AmazeUI 缩略图的实现示例
2020/08/18 HTML / CSS
业务助理岗位职责
2013/11/18 职场文书
家长建议怎么写
2014/05/15 职场文书
水利水电专业自荐信
2014/07/08 职场文书
公司岗位说明书
2015/10/08 职场文书
学校中层领导培训心得体会
2016/01/11 职场文书
Python Matplotlib绘制条形图的全过程
2021/10/24 Python
MySQL优化之慢日志查询
2022/06/10 MySQL