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学习笔记(二十) 获得和设置元素的特性(属性)
Jun 20 Javascript
JavaScript中instanceof运算符的用法总结
Nov 19 Javascript
jquery的attr方法禁用表单元素禁用输入内容
Jun 23 Javascript
jQuery实现表单提交时判断的方法
Dec 13 Javascript
jQuery实现菜单式图片滑动切换
Mar 14 Javascript
JS+CSS实现仿支付宝菜单选中效果代码
Sep 25 Javascript
Backbone View 之间通信的三种方式
Aug 09 Javascript
jQuery命名空间与闭包用法示例
Jan 12 Javascript
jQuery实现简易的输入框字数计数功能示例
Jan 16 Javascript
打造通用的匀速运动框架(实例讲解)
Oct 17 Javascript
解决angularjs service中依赖注入$scope报错的问题
Oct 02 Javascript
一篇文章让你搞懂JavaScript 原型和原型链
Nov 23 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下实现折线图效果的代码
2007/04/28 PHP
php下连接mssql2005的代码
2011/01/17 PHP
Symfony2框架创建项目与模板设置实例详解
2016/03/17 PHP
php版微信发红包接口用法示例
2016/09/23 PHP
Laravel框架实现的记录SQL日志功能示例
2018/06/19 PHP
快速排序 php与javascript的不同之处
2011/02/22 Javascript
js 控制页面跳转的5种方法
2013/09/09 Javascript
JavaScript 获取任一float型小数点后两位的小数
2014/06/30 Javascript
jQuery实现简单的滑动导航代码(移动端)
2017/05/22 jQuery
Angular 封装并发布组件的方法示例
2018/04/19 Javascript
webpack 开发和生产并行设置的方法
2018/11/08 Javascript
JS利用prototype给类添加方法操作详解
2019/06/21 Javascript
vue keep-alive 动态删除组件缓存的例子
2019/11/04 Javascript
JavaScript中的相等操作符使用详解
2019/12/21 Javascript
vue 获取到数据但却渲染不到页面上的解决方法
2020/11/19 Vue.js
[49:58]完美世界DOTA2联赛PWL S3 Magma vs DLG 第一场 12.18
2020/12/19 DOTA
Django如何防止定时任务并发浅析
2019/05/14 Python
Django-Model数据库操作(增删改查、连表结构)详解
2019/07/17 Python
pyinstaller打包opencv和numpy程序运行错误解决
2019/08/16 Python
使用python模拟高斯分布例子
2019/12/09 Python
python 无损批量压缩图片(支持保留图片信息)的示例
2020/09/22 Python
Python生成pdf目录书签的实例方法
2020/10/29 Python
Python 中 sorted 如何自定义比较逻辑
2021/02/02 Python
巴西婴儿用品商店:Bebe Store
2017/11/23 全球购物
美国演唱会和体育门票购买网站:Ticketnetwork
2018/10/19 全球购物
优秀党务工作者事迹材料
2014/05/07 职场文书
考察现实表现材料
2014/05/19 职场文书
办公室主任岗位承诺书
2014/05/29 职场文书
国际商贸专业自荐信
2014/06/09 职场文书
助人为乐道德模范事迹材料
2014/08/16 职场文书
丽江古城导游词
2015/02/03 职场文书
2015公司年度工作总结
2015/05/14 职场文书
2016年最美孝心少年事迹材料
2016/02/26 职场文书
Apache压力测试工具的安装使用
2021/03/31 Servers
浅谈golang 中time.After释放的问题
2021/05/05 Golang
MySQL 四种连接和多表查询详解
2021/07/16 MySQL