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 相关文章推荐
有关js的变量作用域和this指针的讨论
Dec 16 Javascript
jQuery采用连缀写法实现的折叠菜单效果
Sep 18 Javascript
EasyUi中的Combogrid 实现分页和动态搜索远程数据
Apr 01 Javascript
jquery的ajax提交form表单的两种方法小结(推荐)
May 25 Javascript
js+css3制作时钟特效
Oct 16 Javascript
js选项卡的制作方法
Jan 23 Javascript
JavaScript循环_动力节点Java学院整理
Jun 28 Javascript
JS基于for语句编写的九九乘法表示例
Jan 04 Javascript
JS中的BOM应用
Feb 02 Javascript
常用的 JS 排序算法 整理版
Apr 05 Javascript
解决Vue.js由于延时显示了{{message}}引用界面的问题
Aug 25 Javascript
JavaScript中的ES6 Proxy的具体使用
Jun 16 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 Pear 安装及使用
2009/03/19 PHP
PHP学习笔记之二 php入门知识
2011/01/12 PHP
分享下页面关键字抓取www.icbase.com站点代码(带asp.net参数的)
2014/01/30 PHP
PHP rsa加密解密使用方法
2015/04/27 PHP
人脸识别测颜值、测脸龄、测相似度微信接口
2016/04/07 PHP
PHP耦合设计模式实例分析
2018/08/08 PHP
js判断输入是否为数字的具体实例
2013/08/03 Javascript
jquery 隐藏与显示tr标签示例代码
2014/06/06 Javascript
jquery转盘抽奖功能实现
2015/11/13 Javascript
javascript中tostring()和valueof()的用法及两者的区别
2015/11/16 Javascript
快速解决jquery.touchSwipe左右滑动和垂直滚动条冲突
2016/04/15 Javascript
一个字符串中出现次数最多的字符 统计这个次数【实现代码】
2016/04/29 Javascript
jQuery简单实现中间浮窗效果
2016/09/04 Javascript
Js查找字符串中出现次数最多的字符及个数实例解析
2016/09/05 Javascript
把json格式的字符串转换成javascript对象或数组的方法总结
2016/11/03 Javascript
Bootstrap下拉菜单样式
2017/02/07 Javascript
jQuery插件echarts实现的多折线图效果示例【附demo源码下载】
2017/03/04 Javascript
微信小程序 wx:for的使用实例详解
2017/04/27 Javascript
Angular浏览器插件Batarang介绍及使用
2018/02/07 Javascript
vue开发拖拽进度条滑动组件
2019/09/21 Javascript
微信小程序日历插件代码实例
2019/12/04 Javascript
前端使用crypto.js进行加密的函数代码
2020/08/16 Javascript
js在HTML的三种引用方式详解
2020/08/29 Javascript
[01:09:24]Ti4开幕式
2014/07/19 DOTA
[40:48]DOTA2上海特级锦标赛D组败者赛 Liquid VS COL第二局
2016/02/28 DOTA
[09:31]2016国际邀请赛中国区预选赛Yao赛后采访 答题送礼
2016/06/27 DOTA
Python使用百度API上传文件到百度网盘代码分享
2014/11/08 Python
django实现同一个ip十分钟内只能注册一次的实例
2017/11/03 Python
Windows下安装Django框架的方法简明教程
2018/03/28 Python
对python-3-print重定向输出的几种方法总结
2018/05/11 Python
使用pyecharts生成Echarts网页的实例
2019/08/12 Python
医学院四年学习生活的自我评价
2013/11/06 职场文书
党的群众路线教育实践活动批评与自我批评
2014/02/16 职场文书
2015年医药代表工作总结
2015/04/25 职场文书
七年级写作指导之游记作文
2019/10/07 职场文书
nginx之queue的具体使用
2022/06/28 Servers