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 相关文章推荐
javascript各浏览器中option元素的表现差异
Apr 07 Javascript
详解JavaScript的流程控制语句
Nov 30 Javascript
js实现图片无缝滚动
Dec 23 Javascript
jQuery实现的表格展开伸缩效果实例
Sep 07 Javascript
关于Sequelize连接查询时inlude中model和association的区别详解
Feb 27 Javascript
fckeditor部署到weblogic出现xml无法读取及样式不能显示问题的解决方法
Mar 24 Javascript
Vue.js中兄弟组件之间互相传值实例
Jun 01 Javascript
微信浏览器禁止页面下拉查看网址实例详解
Jun 28 Javascript
javascript 跨域问题以及解决办法
Jul 17 Javascript
js装饰设计模式学习心得
Feb 17 Javascript
解决一个微信号同时支持多个环境网页授权问题
Aug 07 Javascript
一文彻底理解js原生语法prototype,__proto__和constructor
Oct 24 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获取远程图片体积大小的实例
2013/11/12 PHP
php下获取http状态的实现代码
2014/05/09 PHP
php workerman定时任务的实现代码
2018/12/23 PHP
PHP PDOStatement::closeCursor讲解
2019/01/30 PHP
个人总结的一些关于String、Function、Array的属性和用法
2007/01/10 Javascript
javascript中数组的冒泡排序使用示例
2013/12/18 Javascript
5款JavaScript代码压缩工具推荐
2014/07/07 Javascript
浅谈nodeName,nodeValue,nodeType,typeof 的区别
2015/01/13 Javascript
多个jQuery版本共存的处理方案
2015/03/17 Javascript
jQuery原生的动画效果
2015/07/10 Javascript
常用的Javascript数据验证插件
2015/08/04 Javascript
把多个JavaScript函数绑定到onload事件处理函数上的方法
2016/09/04 Javascript
request请求获取参数的实现方法(post和get两种方式)
2016/09/27 Javascript
JS自定义混合Mixin函数示例
2016/11/26 Javascript
javascript动画系列之模拟滚动条
2016/12/13 Javascript
AngularJS入门教程之Helloworld示例
2016/12/25 Javascript
简单易懂的天气插件(代码分享)
2017/02/04 Javascript
js实现带三角符的手风琴效果
2017/03/01 Javascript
Ajax验证用户名或昵称是否已被注册
2017/04/05 Javascript
Cropper.js 实现裁剪图片并上传(PC端)
2017/08/20 Javascript
完美解决mui框架off-canvas侧滑超出部分隐藏无法滚动的问题
2018/01/25 Javascript
javascript中floor使用方法总结
2019/02/02 Javascript
JavaScript enum枚举类型定义及使用方法
2020/05/15 Javascript
Javascript基于OOP实实现探测器功能代码实例
2020/08/26 Javascript
Vue中引入svg图标的两种方式
2021/01/14 Vue.js
[43:51]2018DOTA2亚洲邀请赛3月30日 小组赛B组 EG VS Secret
2018/03/31 DOTA
pip安装Python库时遇到的问题及解决方法
2017/11/23 Python
Flask框架模板继承实现方法分析
2019/07/31 Python
Python操作qml对象过程详解
2019/09/26 Python
装上这 14 个插件后,PyCharm 真的是无敌的存在
2021/01/11 Python
MaBelle玛贝尔香港官网:香港钻饰连锁店
2019/09/09 全球购物
Street One瑞士:德国现代时装公司
2019/10/09 全球购物
法人代表身份证明书及授权委托书
2014/09/16 职场文书
寒暑假实习证明书模板
2014/11/29 职场文书
MySQL中InnoDB存储引擎的锁的基本使用教程
2021/05/26 MySQL
Javascript中async与await的捕捉错误详解
2022/03/03 Javascript