最近在做项目的时候,用到了Date.toLocaleString来处理当前日期。在这之前,我都是通过get*等方式来获取数据进行拼接。无意间,发现了toLocaleString方法。遂想写一篇文章来记录Date中不常用到的方法,以便以后查看。

做个测试

条件:当前电脑设置时间为北京时间2018-06-29 02:39:41 am

var date = new Date( ); // ->  Fri Jun 29 2018 02:39:41 GMT+0800 (中国标准时间)
date.toDateString( ); // -> "Fri Jun 29 2018”
date.toGMTString(); // ->"Thu, 28 Jun 2018 18:39:41 GMT” (差8个小时)
date.toISOString(); // ->"2018-06-28T18:39:41.578Z” (差8个小时)
date.toJSON(); // -> "2018-06-28T18:39:41.578Z" (差8个小时)
date.toLocaleDateString() //->"2018/6/29”
date.toLocaleString() //->"2018/6/29 上午2:39:41” (12小时制)
date.toLocaleTimeString() //->"上午2:39:41” (12小时制)
date.toUTCString() //->"Thu, 28 Jun 2018 18:39:41 GMT” (差8个小时)

一.GMT是什么,UTC是什么,ISO是社么???

ISO

ISO( 全称国际标准ISO 8601),是国际标准化组织的日期和时间的表示方法,全称为《数据存储和交换形式·信息交换·日期和时间的表示方法》。(注意ISO 8601是时间格式,不只有一个格式,而是包含很多格式,想了解更多请跳转ISO( 全称国际标准ISO 8601)官方网站

UTC|GMT

我们知道,世界各地区与国家经度不同,地方时也有所不同。正式的时区划分,其中包括24个时区,每个地区都有自己的本地时间。在国际无线电通信场合,为了统一起见,使用一个统一的时间,称为通用协调时(UTC, Universal Time Coordinated)。UTC与格林尼治平均时(GMT, Greenwich Mean Time)一样,都与英国伦敦的本地时相同。北京时区是东八区,领先UTC八个小时。(new Date( ) 返回的是GMT+0800(中国标准时间))

从测试看出,*date.toGMTString()*,*date.toISOString()*,*date.toJSON()*,*date.toUTCString()*返回的都是GMT标准时间。

二.一个特殊的日子 ---- 1970年1月1日

众多编程语言都以 1970-01-01 00:00:00 作为计时起点,那1970年0101是什么日子呢,为什么会选择这一天作为计时起点呢?我上网搜寻了一番,发现原因有两点。

#版本一:Unix系统元年

    1965年时,贝尔实验室(Bell Labs)加入一项由通用电气(General Electric)和麻省理工学院(MIT)合作的计划;该计划要建立一套多使用者、多任务、多层次(multi-user、multi-processor、multi-level)的MULTICS操作系统。 
直到1969年,因MULTICS计划的工作进度太慢,该计划被停了下来。当时,Ken Thompson(后被称为UNIX之父)已经有一个称为”星际旅行”的程序在GE-635的机器上跑,但是反应非常慢,正巧被他发现了一部被闲置的PDP-7(Digital的主机),Ken Thompson和Dernis Ritchie就将”星际旅行”的程序移植到PDP-7上。而这部PDP-7就此在整个计算机历史上留下了芳名。
MULTICS其实是”Multiplexed Information and Computing Service”的缩写,在1970年时,那部PDP-7却只能支持两个使用者,当时,Brian Kernighan就开玩笑地称他们的系统其实是:”UNiplexed Information and Computing Service”,缩写为”UNICS”,后来,大家取其谐音,就称其为”UNIX”了。
1970年可称为”UNIX元年”。 由于很多编程语言起源于UNIX系统,所以编程时间也就以1970-01-01作为计时起点了。

#版本二:最初计算机操作系统是32位,而时间也是用32位表示,Integer.MAX_VALUE68 年就会回归一次。

    最初计算机操作系统是32位,而时间也是用32位表示。 System.out.println(Integer.MAX_VALUE); 2147483647 Integer在JAVA内用32位表示,因此32位能表示的最大值是2147483647。
另外1年365天的总秒数是31536000, 2147483647/31536000 = 68.1 也就是说32位能表示的最长时间是68年,而实际上到2038年01月19日03时14分07 秒,便会到达最大时间,过了这个时间点,所有32位操作系统时间便会变为 10000000 00000000 00000000 00000000 也就是1901年12月13日20时45分52秒,这样便会出现时间回归的现象,很多软件便会运行异常了。而最早出现的UNIX操作系统考虑到计算 机产生的年代和应用的时限综合取了1970年1月1日作为UNIX TIME的纪元时间(开始 时间)。至于时间回归的现象相信随着64为操作系统的产生逐渐得到解决,因为用64位操作 系统可以表示到292,277,026,596年12月4日15时30分08秒,相信我们的N代子孙,哪怕地球毁灭那天都不用愁不够用了,因为这个时间已经是千亿年以后了。

关于Date的冷门知识记录的更多相关文章

  1. Web前端理论知识记录

      Web前端理论知识记录 Elena· 5 个月前 cookies,sessionStorage和localStorage的区别? sessionStorage用于本地存储一个会话(session) ...

  2. C#基础知识记录一

    C#基础知识记录一 static void Main(string[] args) { #region 合并运算符的使用(合并运算符??) 更多运算符请参考:https://msdn.microsof ...

  3. DataBase MongoDB基础知识记录

    MongoDB基础知识记录 一.概念: 讲mongdb就必须提一下nosql,因为mongdb是nosql的代表作: NoSQL(Not Only SQL ),意即“不仅仅是SQL” ,指的是非关系型 ...

  4. MongoDB基础知识记录

    MongoDB基础知识记录 一.概念: 讲mongdb就必须提一下nosql,因为mongdb是nosql的代表作: NoSQL(Not Only SQL ),意即“不仅仅是SQL” ,指的是非关系型 ...

  5. 关于Excel做表小知识记录

    关于Excel做表小知识记录 最近使用Excel做了一系列的报表,觉得这是个很神奇的东西哈哈哈,以前我可是一想到Excel就开始头疼的人...  能用代码或者SQL语句解决的问题绝不会愿意留在Exce ...

  6. Maven知识记录(一)初识Maven私服

    Maven知识记录(一)初识Maven私服 什么是maven私服 私服即私有的仓库.maven把存放文件的地方叫做仓库,我们可以理解成我门家中的储物间.而maven把存放文件的具体位置叫做坐标.我们项 ...

  7. Linux文件系统知识记录——ext2描述

    最近完成了一个编程作业,大致功能是给定一个文件名,给出该文件所在目录和其本身所占用的簇号等信息.笔者选用了Linux的ext系列文件系统作为实验对象,通过实验对ext2文件系统的存储和索引有了一个较为 ...

  8. 零散知识记录-一个MQ问题

    [背景]我有一项零散工作:维护大部门的一台测试公用MQ服务器.当大部分MQ被建立起来,编写了维护手册,大家都按照规程来后,就基本上没有再动过它了.周五有同学跟我反映登录不进去了,周日花了1个小时来解决 ...

  9. Java实用知识记录 —— 截止到Java8

    记录Java实用知识点,截止(包括)到Java8,只作概要的描述,不涉及到具体细节.变量:int.long的包装类支持无符号位操作,即其在内存中的位可以用来全部表示正数."_"可以 ...

随机推荐

  1. 软件项目技术点(1)——d3.interpolateZoom-在两个点之间平滑地缩放平移

    AxeSlide软件项目梳理   canvas绘图系列知识点整理 软件参考d3的知识点 我们在软件中主要用到d3.js的核心函数d3.interpolateZoom - 在两个点之间平滑地缩放平移.请 ...

  2. 【阿里云产品公测】性能测试服务PTS的初步尝试

        性能测试服务PTS,对于像我这样对测试毫无概念的新手来说,这服务真的太好了,使用简单,官方教程又明细,连我这样的新手一看都明白了怎样使用. _%GGl$kH   下面是我来简单尝试一下,更多功 ...

  3. BottomBar之Android底部菜单

    BottomBar之Android底部菜单 前言:开源项目BottomBar,实现Android底部菜单(常用菜单,BottomBar实现动画(上下式)+消息菜单,BottomBar+ViewPage ...

  4. CVE-2016-3231

    摘要:重现了下韩国小哥Lokihardt在pwn2own上的过沙箱提权漏洞. 1 #include <windows.h> 2 #include <atlbase.h> 3 # ...

  5. 启动入口Start.java分析

    框架的启动器在包:org.ofbiz.base.start 入口为:Start.java的main方法 Start.java启动器内容: 步骤 详情 入参校验 help/status/shutdown ...

  6. ZT 苍天助曹不助汉哪

    诸葛亮能夜观星象,但为什么在上方谷一役中,孔明没有测出突如其来的大雨,却高呼“苍天助曹不助汉哪”断送了自己的性命,这是为什么 谋事在人,成事在天.   雁过留影 3级 2011-04-18 天命不可违 ...

  7. Oracle基础操作

    数据库的定义.作用介绍: 什么是数据库? 按照数据结构来组织.存储和管理数据的建立在计算机存储设备上的仓库. 数据库的发展史: 起始于1962年,1968年在IBM出现 数据库在测试过程中的作用: 需 ...

  8. 配置java环境变量(详细)

    内容:java安装.配置java环境变量.简单编译运行(详细) 为什么配置系统环境变量好?个人理解在结尾 ############################################### ...

  9. 一个理解PHP面向对象编程(OOP)的实例

    <?php //定义一个“人”类作为父类 class Person{ //声明一个新变量公共变量$name,可被任何包中的类访问 public $name;//人的名字 public $sex; ...

  10. 详解为什么32位系统只能用4G内存.

    本文转自:https://www.cnblogs.com/nvd11/archive/2013/04/02/2996784.html,感谢作者的干货 既然是详解, 就从最基础的讲起了. 1. Bit( ...