当前位置: 移动技术网 > IT编程>开发语言>JavaScript > JS操作时间 - UNIX时间戳的简单介绍(必看篇)

JS操作时间 - UNIX时间戳的简单介绍(必看篇)

2017年12月12日  | 移动技术网IT编程  | 我要评论
准备知识 gmt(greenwich mean time) - 格林尼治时间。utc(universal time code) - 国际协调时间。pst(pacific

准备知识

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时间戳的简单介绍(必看篇)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持移动技术网。

如您对本文有疑问或者有任何想说的,请 点击进行留言回复,万千网友为您解惑!

相关文章:

验证码:
移动技术网