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 相关文章推荐
在页面上点击任一链接时触发一个事件的代码
Apr 07 Javascript
javascript 触发事件列表 比较不错
Sep 03 Javascript
ajax 缓存 问题 requestheader
Aug 01 Javascript
网易JS面试题与Javascript词法作用域说明
Nov 09 Javascript
基于jquery实现状态限定编辑的代码
Feb 11 Javascript
JS判断页面加载状态以及添加遮罩和缓冲动画的代码
Oct 11 Javascript
jquery+css+ul模拟列表菜单具体实现思路
Apr 15 Javascript
Jquery判断$("#id")获取的对象是否存在的方法
Sep 25 Javascript
getJSON调用后台json数据时函数被调用两次的原因猜想
Sep 29 Javascript
jQuery实现在textarea指定位置插入字符或表情的方法
Mar 11 Javascript
Vue项目中配置pug解析支持
May 10 Javascript
使用konva和vue-konva库实现拖拽滑块验证功能
Apr 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
PHP中捕获超时事件的方法实例
2015/02/12 PHP
[原创]php正则删除html代码中class样式属性的方法
2017/05/24 PHP
ThinkPHP实现登录退出功能
2017/06/29 PHP
实例讲解PHP表单处理
2019/02/15 PHP
jquery select下拉框操作的一些说明
2010/04/02 Javascript
判断对象是否Window的实现代码
2012/01/10 Javascript
ejs v9 javascript模板系统
2012/03/21 Javascript
对frameset、frame、iframe的js操作示例代码
2013/08/16 Javascript
javascript中的Base64、UTF8编码与解码详解
2015/03/18 Javascript
基于JavaScript实现图片点击弹出窗口而不是保存
2016/02/06 Javascript
Bootstrap下拉菜单效果实例代码分享
2016/06/30 Javascript
Javascript中apply、call、bind的巧妙使用
2016/08/18 Javascript
Cookies 和 Session的详解及区别
2017/04/21 Javascript
AngularJS实现的回到顶部指令功能实例
2017/05/17 Javascript
微信小程序 获取javascript 里的数据
2017/08/17 Javascript
浅谈JS函数节流防抖
2017/10/18 Javascript
jsonp跨域及实现百度首页联想功能的方法
2018/08/30 Javascript
Javascript实现秒表倒计时功能
2018/11/17 Javascript
微信小程序云开发使用方法新手初体验
2019/05/16 Javascript
微信小程序实现传递多个参数与事件处理
2019/08/12 Javascript
vuex state中的数组变化监听实例
2019/11/06 Javascript
[03:01]完美盛典趣味短片 DOTA2年度最佳&拉胯英雄
2019/12/07 DOTA
Python使用pyautogui模块实现自动化鼠标和键盘操作示例
2018/09/04 Python
Python将string转换到float的实例方法
2019/07/29 Python
django 自定义filter 判断if var in list的例子
2019/08/20 Python
基于python 将列表作为参数传入函数时的测试与理解
2020/06/05 Python
Keras保存模型并载入模型继续训练的实现
2021/02/20 Python
俄罗斯在线大型超市:ТутПросто
2021/01/08 全球购物
广州一家公司的.NET面试题
2016/06/11 面试题
机械专业个人求职自荐信格式
2013/09/21 职场文书
《新型玻璃》教学反思
2014/04/13 职场文书
3分钟英语演讲稿
2014/04/29 职场文书
计算机毕业大学生求职信
2014/06/26 职场文书
美术兴趣小组活动总结
2014/07/07 职场文书
税务干部群众路线教育实践活动自我剖析材料
2014/09/21 职场文书
goland 清除所有的默认设置操作
2021/04/28 Golang