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 相关文章推荐
深入聊聊Array的sort方法的使用技巧.详细点评protype.js中的sortBy方法
Apr 12 Javascript
js的一些常用方法小结
Jun 29 Javascript
jquery struts 验证唯一标识(公用方法)
Mar 27 Javascript
javaScript如何处理从java后台返回的list
Apr 24 Javascript
JS阻止事件冒泡行为和闭包的方法
Jun 16 Javascript
Bootstrap 填充Json数据的实例代码
Jan 11 Javascript
微信小程序开发中的疑问解答汇总
Jul 03 Javascript
Vue Prop属性功能与用法实例详解
Feb 23 Javascript
手写Vue弹窗Modal的实现代码
Sep 11 Javascript
微信小程序12行js代码自己写个滑块功能(推荐)
Jul 15 Javascript
从0到1学习JavaScript编写贪吃蛇游戏
Jul 28 Javascript
js实现简易ATM功能
Oct 27 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
如何给phpadmin一个保护
2006/10/09 PHP
《PHP边学边教》(01.开篇――准备工作)
2006/12/13 PHP
PHP 杂谈《重构-改善既有代码的设计》之四 简化条件表达式
2012/04/09 PHP
php封装的mysqli类完整实例
2016/10/18 PHP
用Javascript读取中文COOKIE的解决办法
2007/02/15 Javascript
JavaScript高级程序设计 阅读笔记(四) ECMAScript中的类型转换
2012/02/27 Javascript
jQuery fadeTo方法调整图片的透明度使用介绍
2013/05/06 Javascript
JS分页控件 可用于无刷新分页
2013/07/23 Javascript
jQuery+ajax实现鼠标单击修改内容的思路
2014/06/29 Javascript
Javascript前端UI框架Kit使用指南之kitjs事件管理
2014/11/28 Javascript
JavaScript实现LI列表数据绑定的方法
2015/08/04 Javascript
js实现人民币大写金额形式转换
2016/04/27 Javascript
jQuery验证插件validate使用方法详解
2020/09/13 Javascript
深入理解javascript中concat方法
2016/12/12 Javascript
js中创建对象的几种方式
2017/02/05 Javascript
关于Angular2 + node接口调试的解决方案
2017/05/28 Javascript
Angular 4依赖注入学习教程之组件服务注入(二)
2017/06/04 Javascript
JavaScrip数组删除特定元素的几种方法总结
2017/09/06 Javascript
JQuery选中select组件被选中的值方法
2018/03/08 jQuery
vue轮播组件实现$children和$parent 附带好用的gif录制工具
2019/09/26 Javascript
Node在Controller层进行数据校验的过程详解
2020/08/28 Javascript
浏览器JavaScript调试功能无法使用解决方案
2020/09/18 Javascript
解决VueCil代理本地proxytable无效报错404的问题
2020/11/07 Javascript
js删除指定位置超链接中含有百度与360的标题
2021/01/06 Javascript
对Python _取log的几种方式小结
2019/07/25 Python
Python3 元组tuple入门基础
2020/02/09 Python
python数据预处理方式 :数据降维
2020/02/24 Python
基于Python爬取爱奇艺资源过程解析
2020/03/02 Python
Python虚拟环境库virtualenvwrapper安装及使用
2020/06/17 Python
python利用xlsxwriter模块 操作 Excel
2020/10/14 Python
意大利比基尼品牌:MISS BIKINI
2019/11/02 全球购物
Java中有几种方法可以实现一个线程?用什么关键字修饰同步方法?stop()和suspend()方法为何不推荐使用?
2015/08/04 面试题
在子网210.27.48.21/30种有多少个可用地址?分别是什么?
2014/07/27 面试题
硕士研究生求职自荐信范文
2014/03/11 职场文书
党员教师四风问题对照检查材料
2014/09/26 职场文书
python+opencv实现目标跟踪过程
2022/06/21 Python