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 window.setTimeout() 的详细用法
Nov 04 Javascript
JQuery 1.3.2以上版本中出现pareseerror错误的解决方法
Jan 11 Javascript
JavaScript中访问节点对象的方法有哪些如何使用
Sep 24 Javascript
jquery制作 随机弹跳的小球特效
Feb 01 Javascript
jQuery实现的超酷苹果风格图标滑出菜单效果代码
Sep 16 Javascript
js获取腾讯视频ID的方法
Oct 03 Javascript
浅谈使用splice函数对数组中的元素进行删除时的注意事项
Dec 04 Javascript
微信小程序 选项卡的简单实例
May 24 Javascript
解决Vue打包之后文件路径出错的问题
Mar 06 Javascript
vue中本地静态图片路径写法
Mar 06 Javascript
layui数据表格跨行自动合并的例子
Sep 02 Javascript
解决vue打包 npm run build-test突然不动了的问题
Nov 13 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实现的比较完善的购物车类
2014/12/02 PHP
同一个表单 根据要求递交到不同页面的实现方法小结
2009/08/05 Javascript
JavaScript与Image加载事件(onload)、加载状态(complete)
2011/02/14 Javascript
JS 进度条效果实现代码整理
2011/05/21 Javascript
JS控制图片等比例缩放的示例代码
2013/12/24 Javascript
node.js WEB开发中图片验证码的实现方法
2014/06/03 Javascript
js图片跟随鼠标移动代码
2015/11/26 Javascript
详解nodejs 文本操作模块-fs模块(五)
2016/12/23 NodeJs
angularjs ui-router中路由的二级嵌套
2017/03/10 Javascript
浅谈通过JS拦截 pushState和replaceState事件
2017/07/21 Javascript
jquery插件开发之选项卡制作详解
2017/08/30 jQuery
js+html获取系统当前时间
2017/11/10 Javascript
javascript实现商品图片放大镜
2019/11/28 Javascript
详细分析Node.js 模块系统
2020/06/28 Javascript
javascript实现数字时钟效果
2021/02/06 Javascript
[46:47]2014 DOTA2国际邀请赛中国区预选赛5.21 LGD-CDEC VS NE
2014/05/22 DOTA
Python的Bottle框架的一些使用技巧介绍
2015/04/08 Python
使用Python脚本操作MongoDB的教程
2015/04/16 Python
Python实现TCP/IP协议下的端口转发及重定向示例
2016/06/14 Python
谈谈如何手动释放Python的内存
2016/12/17 Python
Python random模块用法解析及简单示例
2017/12/18 Python
python中的闭包函数
2018/02/09 Python
Python2和3字符编码的区别知识点整理
2019/08/08 Python
使用Python的Turtle绘制哆啦A梦实例
2019/11/21 Python
意大利领先的线上奢侈品销售电商:Eleonora Bonucci
2017/10/17 全球购物
手工制作的音乐盒:Music Box Attic
2019/09/05 全球购物
四个太阳教学反思
2014/02/01 职场文书
如何写一封打动人心的求职信
2014/02/17 职场文书
参观接待方案
2014/03/17 职场文书
授权委托书协议书
2014/10/16 职场文书
锅炉工岗位职责
2015/02/13 职场文书
2015年清明节网上祭英烈活动总结
2015/03/26 职场文书
收入证明申请书
2015/06/12 职场文书
2016小学新学期寄语
2015/12/04 职场文书
如何有效防止sql注入的方法
2021/05/25 SQL Server
Win11如何设置右键单击显示所有选项?Win11右键单击显示所有选项设置教程
2022/04/08 数码科技