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实现一个TreeMenu效果分享
Aug 28 Javascript
Javascript查询DBpedia小应用实例学习
Mar 07 Javascript
js使用ajax读博客rss示例
May 06 Javascript
JavaScript使用Max函数返回两个数字中较大数的方法
Apr 06 Javascript
jQuery插件Zclip实现完美兼容个浏览器点击复制内容到剪贴板
Apr 30 Javascript
jQuery unbind()方法实例详解
Jan 19 Javascript
javascript实现的猜数小游戏完整实例代码
May 10 Javascript
angular过滤器实现排序功能
Jun 27 Javascript
微信小程序使用radio显示单选项功能【附源码下载】
Dec 11 Javascript
Vue如何实现响应式系统
Jul 11 Javascript
jquery层次选择器的介绍
Jan 18 jQuery
利用d3.js实现蜂巢图表带动画效果
Sep 03 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
如何通过Linux命令行使用和运行PHP脚本
2015/07/29 PHP
Laravel+jQuery实现AJAX分页效果
2016/09/14 PHP
使用jscript实现二进制读写脚本代码
2008/06/09 Javascript
Javascript客户端将指定区域导出到Word、Excel的代码
2008/10/22 Javascript
jQuery.clean使用方法及思路分析
2013/01/07 Javascript
JS函数this的用法实例分析
2015/02/05 Javascript
javascript常用方法总结
2015/05/14 Javascript
jQuery之简单的表单验证实例
2016/07/07 Javascript
基于JavaScript实现自动更新倒计时效果
2016/12/19 Javascript
Angularjs修改密码的实例代码
2017/05/26 Javascript
详解刷新页面vuex数据不消失和不跳转页面的解决
2018/01/30 Javascript
JavaScript常用事件介绍
2019/01/21 Javascript
基于vue-draggable 实现三级拖动排序效果
2020/01/10 Javascript
JavaScript数组类型Array相关的属性与方法详解
2020/09/08 Javascript
SpringBoot+Vue开发之Login校验规则、实现登录和重置事件
2020/10/19 Javascript
python数据结构之二叉树的建立实例
2014/04/29 Python
Python使用redis pool的一种单例实现方式
2016/04/16 Python
python并发编程之多进程、多线程、异步和协程详解
2016/10/28 Python
Python中几种导入模块的方式总结
2017/04/27 Python
Python的地形三维可视化Matplotlib和gdal使用实例
2017/12/09 Python
Python3用tkinter和PIL实现看图工具
2018/06/21 Python
Python Unittest根据不同测试环境跳过用例的方法
2018/12/16 Python
python字符串分割及字符串的一些常规方法
2019/07/24 Python
python 装饰器功能与用法案例详解
2020/03/06 Python
Anaconda+VSCode配置tensorflow开发环境的教程详解
2020/03/30 Python
python实现人工蜂群算法
2020/09/18 Python
Dockers美国官方网站:卡其裤、男士服装、鞋及配件
2016/11/22 全球购物
美国咖啡批发网站:Coffee.org
2017/06/29 全球购物
比利时买床:Beter Bed
2017/12/06 全球购物
英国在线泳装店:Simply Swim
2019/05/05 全球购物
2014年商场超市庆元旦活动方案
2014/02/14 职场文书
文艺晚会主持词
2014/03/24 职场文书
项目合作协议书
2014/09/23 职场文书
教师批评与自我批评总结
2014/10/16 职场文书
2014年班组工作总结
2014/11/20 职场文书
Spring boot应用启动后首次访问很慢的解决方案
2021/06/23 Java/Android