关于Date的冷门知识记录
最近在做项目的时候,用到了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的冷门知识记录的更多相关文章
- Web前端理论知识记录
Web前端理论知识记录 Elena· 5 个月前 cookies,sessionStorage和localStorage的区别? sessionStorage用于本地存储一个会话(session) ...
- C#基础知识记录一
C#基础知识记录一 static void Main(string[] args) { #region 合并运算符的使用(合并运算符??) 更多运算符请参考:https://msdn.microsof ...
- DataBase MongoDB基础知识记录
MongoDB基础知识记录 一.概念: 讲mongdb就必须提一下nosql,因为mongdb是nosql的代表作: NoSQL(Not Only SQL ),意即“不仅仅是SQL” ,指的是非关系型 ...
- MongoDB基础知识记录
MongoDB基础知识记录 一.概念: 讲mongdb就必须提一下nosql,因为mongdb是nosql的代表作: NoSQL(Not Only SQL ),意即“不仅仅是SQL” ,指的是非关系型 ...
- 关于Excel做表小知识记录
关于Excel做表小知识记录 最近使用Excel做了一系列的报表,觉得这是个很神奇的东西哈哈哈,以前我可是一想到Excel就开始头疼的人... 能用代码或者SQL语句解决的问题绝不会愿意留在Exce ...
- Maven知识记录(一)初识Maven私服
Maven知识记录(一)初识Maven私服 什么是maven私服 私服即私有的仓库.maven把存放文件的地方叫做仓库,我们可以理解成我门家中的储物间.而maven把存放文件的具体位置叫做坐标.我们项 ...
- Linux文件系统知识记录——ext2描述
最近完成了一个编程作业,大致功能是给定一个文件名,给出该文件所在目录和其本身所占用的簇号等信息.笔者选用了Linux的ext系列文件系统作为实验对象,通过实验对ext2文件系统的存储和索引有了一个较为 ...
- 零散知识记录-一个MQ问题
[背景]我有一项零散工作:维护大部门的一台测试公用MQ服务器.当大部分MQ被建立起来,编写了维护手册,大家都按照规程来后,就基本上没有再动过它了.周五有同学跟我反映登录不进去了,周日花了1个小时来解决 ...
- Java实用知识记录 —— 截止到Java8
记录Java实用知识点,截止(包括)到Java8,只作概要的描述,不涉及到具体细节.变量:int.long的包装类支持无符号位操作,即其在内存中的位可以用来全部表示正数."_"可以 ...
随机推荐
- iview table数据排序不正确
在使用iview的table组件时,要做排序 代码: sortable: true,sortMethod: (a, b, type) => { if (type === 'desc') { re ...
- [小北De编程手记] : Lesson 04 - Selenium For C# 之 API 上
这一部分,我准备向大家介绍Selenium WebDriver的常用API,学习这部分内容需要大家最好有一些简单的HTML相关知识,本文主要涉及到以下内容: Selenium API:元素检查 Sel ...
- 转:hive面试题
有一张很大的表:TRLOG该表大概有2T左右TRLOG:CREATE TABLE TRLOG(PLATFORM string,USER_ID int,CLICK_TIME string,CLICK_U ...
- SharePoint 2013 - Host-named Site Collection
1. 详细操作可参考此文章 的 Deployment and configuration for host-named site collections区域,简单来说,需要以下三行PowerShell ...
- js前台实现上传图片的预览
网上这样的插件一大堆,不过还是谈下js下代码的实现,加深这方面的理解. 当然也没有一种方式就可以完事的情形,主要就两种方面来处理: 1.file API的filereader接口完成(支持的浏览器:I ...
- java通过jxls框架实现导入导出excel
//使用jxls报表生成工具,把java实体类导出生成 Excel文件或导入 Excel 插入数据库 02 03//读取04 05public class ReadExcel {06 private ...
- Linux->apt-包的位置和变更
ubuntu中由apt-get获得的文件包保存在/var/cache/apt/archives: 通过apt-get命令下载的软件包,放在/var/cache/apt/archives 目录下: 下载 ...
- Linux->Mysql安装调试
环境准备 mysql下载地址:https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.19-linux-glibc2.12-x86_64.tar ...
- Deep Learning Drizzle
Deep Learning Drizzle Drench yourself in Deep Learning, Reinforcement Learning, Machine Learning, Co ...
- Spark资源调度分配内幕天机彻底解密:Driver在Cluster模式下的启动、两种不同的资源调度方式源码彻底解析、资源调度内幕总结
本课主题 Master 资源调度的源码鉴赏 资源调度管理 任务调度与资源是通过 DAGScheduler.TaskScheduler.SchedulerBackend 等进行的作业调度 资源调度是指应 ...