标准时间_标准时间和中国标准时间比较 - CSDN
  • 这篇断断续续写了很久,是...这次关于时间的探索让我重新学了Date对象、Unix时间戳、时间的几种标准、还重学了地理等。---------------最后看下面这块------------遇到两个问题,js中使用new Date()取出的时间结果会...

    这篇断断续续写了很久,是因为时间这个坑真的可以越挖越深,本来名字叫“关于时间戳的一切”,打算总结几种时间格式到时间戳的转换方法,结果越总结发现自己自己不懂的越多,后续还会再补充的。这次关于时间的探索让我重新学了Date对象、Unix时间戳、时间的几种标准、还重学了地理等。

    ---------------最后看下面这块------------

    遇到两个问题,js中使用new Date()取出的时间结果会因为输入时间精度、格式不同而不同:在精度无时分秒YYYY-MM-DD和有时分秒YYYY-MM-DD hh:mm:ss 之后使用getTime取到的时间戳不同,多出8小时;以及在YYYY-MM-DD和YYYY/MM/DD返回的结果不同,也是差8小时。如图:

       

    从测试结果来看:
    new Date('1970-01-01')和new Date('1970-01-01 08:00:00')的getTime()结果相同,我有点懵b;
    继续看new Date('1970/01/01')和new Date('1970-01-01') ,输出结果后者多了8小时;

    emmm...瞬间感到很可怕,一直以为'1970-01-01'等于'1970-01-01 00:00:00' 、'1970-01-01''等于1970/01/01'的我,会不会过去的代码中制造了什么错误..

    仔细对比分析有了两个推测:


    1,new Date('/') 接收的是当地时间,没写时分秒自动补0,输入与输出一致

    2,new Date('-') 接收的是UTC时间,没写时分秒自动补0,输出本地时间;写了时分秒也就是YYYY-MM-DD hh:mm:ss格式时接收的是当地时间,输入与输出一致

    ---------------------最后看上面这块-----------------------


    一、时间戳和时区

    1,Unix时间戳(Unix timestamp)定义为从1970年01月01日00时00分00秒(UTC)起至现在经过的总秒数。

    2,JavaScript中提供的Date对象可以将所有时间都存为一个整数,表示从1970年1月1日00:00:00起的总毫秒数。

    ↑这两点意味着:
    1)使用unix时间戳作为参数需要乘以1000得到毫秒数Date()对象才能正确接收,getTime时需要除以1000才能得到时间戳。
    2)js中判断一个时间戳的精度,可以靠时间戳长度:精确到秒是10位;精确到毫秒是13位。

    3)在js中利用时间戳很容易计算出一个间隔恒定的时间轴,或者给一个时间推算出某段时间之前or之后的具体日期,或者日期比较

    3,北京时间 = GMT+8 = UTC+8

    GMT是格林尼治平均时,UTC是世界标准时/协调世界时/原子时。前者是太阳时,GMT的正午为太阳在格林尼治上空最高点的时间,但是这个时间受地球自转速度影响所以每一天的时间都存在一定误差;后者由原子能级跃迁振动频率计时得出误差很小。GMT几乎等于UTC。北京时间采用东八区时间,复习一下地理:本初子午线是0度经线穿过格林尼治天文台,日期变更线基于东西经重合的180度经线。全球24个时区里,我们在东经120度落在东八区,由于地球自西向东旋转我们要比英国的盆友更早迎接新的一天的早中晚,时间上就是早了8个小时。当英国时间为正午时,我们的时间为晚上8点,这时全球都在同一天。

    ↑这意味着:
    Unix时间戳起始时间是我们北京时间的1970年01月01日08时00分00秒


    二、几种表示时间的格式/标准

    1,RFC-2822标准格式,形如:
    Sun Apr 08 2018 11:38:39 GMT+0800(CST)

    2,ISO-8601标准格式,其中一种常见的格式形如:
    2018-04-08T11:38:39+08:00   日期用“-”相隔,与时间用“T”连接
    2018-04-08T11:38:39Z     Z代表UTC时间,Z也可写成00:00


    三、js中的Date对象

    1,Date()作为函数不管有无参数直接调用获取的是当前的日期和时间,结果是表示当前时间的字符串,并且是已经转换为当前时区的时间;

    2,Date()作为构造函数无参数时使用new Date(),结果是表示当前时间的对象,并且是已经转换为当前时区的时间

         

    GMT+0800(CST)代表东八区,CST(china standard time)表示中国标准时间

    3,作为构造函数时,Date对象可以接收多种格式的参数,用法如下:

    new Date()   //返回当前时间
    new Date(number)   //number为自1970.01.01 00:00:00经过的毫秒数,返回number毫秒后的时间

    new Date(string)   //string代表时间的字符串,返回这个时间的Date对象
    new Date(year, month, day, hours, minutes, seconds, milliseconds)

    构造出的日期用来显示时会转为本地时间(toString方法)
    当参数为string时,写法很多,所有能被Date.parse()解析的字符串都可以作为参数。需要注意的是,es5中,当日期以“-”作为分隔符且月日数字小于10前面补0(如2018-09-03),和数字大于9(如2018-10-10),JavaScript接收时会把字符串当作ISO-8601格式按照0时区也就是UTC时间来接收;es6改为没有指定时区就会默认为当地时间。其他格式如2018/10/10都是非ISO-8601格式接收当作本地时间。'2018-04-08T00:00:00Z'是UTC,'2018-04-08 00:00:00'非UTC等于ISO-8601格式的'2018-04-08T00:00:00+08:00'。
    ↑这也就解释了开篇的疑惑,推测基本正确,只是有“-”不一定是UTC,而且推测的时候对于GMT和UTC没有做精确区分。真正原因上面这段。

    4,日期的运算
    两个日期对象相减,得到相差的毫秒数;相加为两个日期字符串的相加。

    ↑这意味着算时间差时无需先getTime,可以直接相减。

    5,计算1970-01-01 00:00:00至指定日期的毫秒数
    1)new Date('日期').getTime()
    2) Date.parse('日期')
    3)Date.UTC('日期')  该日期为UTC时间,不会根据写法不同做本地转换
    4)Date.now()  至当前时间,可用来计算代码运行时间
    5) +new Date('日期')  等于  new Date('日期').getTime()


    四、几种标准的时间与时间戳的转换(js中时间戳的N种获取方式)

    1, js获取某一时间的时间戳
    上面第三点第5标题下的任意一种方法获取1970-01-01 00:00:00至指定日期的毫秒数 为ms,
    Math.round(ms/1000) 
    如果是当前时间直接除以1000也可以Math.round(new Date() / 1000)

    2,时间戳转时间字符串
    1)转“2018-04-08”或“2018/04/08”或任意组装的格式
    先用new Date(UnixTimeStamp)将时间戳转为Date类型对象,再使用getFullYear(),getMonth(),getDate(),getHours(),getMinutes(),getSeconds()分别获取年月日时分秒,注意的是getMonth()返回数字是0~11,所以换成可读的月份要加1。
    2)转ISO-8061格式的UTC时间和本地易读的时间
    toJSON(),toISOString(),toLocaleString()如图

    3)转RFC-2822时间,也就是new Date()出来的时间的长相,之前说了typeof new Date()是对象,把对象变为字符串用toString()


    参考资料:

    https://segmentfault.com/a/1190000004292140
    https://www.xuanfengge.com/js-date-object.html
    http://blog.sina.com.cn/s/blog_65415e870102wwnq.html



    展开全文
  • 秒数换成标准时间,从1970年开始 NSDateFormatter *formatter = [[NSDateFormatter alloc] init];  [formatter setDateFormat:@"yyyy年MM月dd日 HH:mm:ss"];  NSString *dateLoca = [NSString ...

    秒数换成标准时间,从1970年开始

    NSDateFormatter *formatter = [[NSDateFormatter alloc] init];

            [formatter setDateFormat:@"yyyyMMdd HH:mm:ss"];

            NSString *dateLoca = [NSString stringWithFormat:@"%@",@“你的秒数”];

            NSTimeInterval time=[dateLoca doubleValue];

            NSDate *detaildate=[NSDate dateWithTimeIntervalSince1970:time];

            NSString *timestr = [formatter stringFromDate:detaildate];



    时间换成秒数,从1970年到你需要的时间   10位

    NSTimeInterval time=[[NSDate date]timeIntervalSince1970];

            long long int nowDate=(long long int)time;

            NSString *timeStr=[NSString stringWithFormat:@"%lli",nowDate];

            NSLog(@"second is %@",timeStr);


    展开全文
  • 'Thu May 12 2016 08:00:00 GMT+0800 (中国标准时间)'--此格式日期无法传到java后台,须格式化,方法如下 var d = new Date('Thu May 12 2016 08:00:00 GMT+0800 (中国标准时间)'); youWant=d....
    'Thu May 12 2016 08:00:00 GMT+0800 (中国标准时间)'--此格式日期无法传到java后台,须格式化,方法如下


    var d = new Date('Thu May 12 2016 08:00:00 GMT+0800 (中国标准时间)');  


    youWant=d.getFullYear() + '-' + (d.getMonth() + 1) + '-' + d.getDate() + ' ' + d.getHours() + ':' + d.getMinutes() + ':' + d.getSeconds(); 
    展开全文
  • ISO 8601 标准时间格式

    2011-08-17 11:01:08
    国际标准化组织的国际标准ISO8601是日期和时间的表示方法,全称为《数据存储和交换形式·信息交换·日期和时间的表示方法》。目前是第二版ISO8601:2000以替代第一版ISO8601:1988。  日期表示法  年由4位数组成,...

    国际标准化组织的国际标准ISO8601是日期和时间的表示方法,全称为《数据存储和交换形式·信息交换·日期和时间的表示方法》。目前是第二版ISO8601:2000以替代第一版ISO8601:1988。

      日期表示法

      年由4位数组成,以公历公元1年为0001年,以公元前1年为0000年,公元前2年为-0001年,其他以此类推。应用其他纪年法要换算成公历,但如果发送和接受信息的双方有共同一致同意的其他纪年法,可以自行应用。

      日历日期表示法

      年为4位数,月为2位数,月中的日为2位数,例如2004年5月3日可写成2004-05-03或20040503。

      顺序日期表示法

      可以将一年内的天数直接表示,平年365天,闰年366天。如2004年5月3日可以表示为2004-157或2004157

      日历星期和日表示法

      可以用2位数表示本年内第几个日历星期,再加上一位数表示日历星期内第几天,但日历星期前要加上一个大写字母W,如2004年5月3日可写成2004-W17-3或2004W173。但2004-W011是从2004年1月5日开始的,前几天属于上年的第54个日历星期,每个日历星期从星期一开始,星期日为第7天。

      日的时间表示法

      小时、分和秒都用2位数表示,对UTC时间最后加一个大写字母Z,其他时区用实际时间加时差表示。如UTC时间下午2点30分5秒表示为14:30:05Z或143005Z,当时的北京时间表示为22:30:05+08:00或223005+0800,也可以简化成223005+08。

      日期和时间的组合表示法

      合并表示时,要在时间前面加一大写字母T,如要表示北京时间2004年5月3日下午5点30分8秒,可以写成2004-05-03T17:30:08+08:00或20040503T093008+08。

      时间段表示法

      如果要表示某一作为一段时间的时间期间,前面加一大写字母P,但时间段后都要加上相应的代表时间的大写字母。如在一年三个月五天六小时七分三十秒内,可以写成P1Y3M5DT6H7M30S。

      重复时间表示法

      前面加上一大写字母R,如要从2004年5月6日北京时间下午1点起重复半年零5天3小时,要重复3次,可以表示为R3/20040506T130000+08/P0Y6M5DT3H0M0S。

      对应的各地标准

      中华人民共和国国家标准GB/T 7408-1994《数据元和交换格式·信息交换·日期和时间表示法》与ISO8601:1988等效采用。

      中华民国《中国国家标准》CNS 7648《资料元及交换格式·资讯交换·日期及时间的表示法》与ISO8601类似,可用公元年,也可冠以大写R.O.C.字母用民国纪元。例如,2004年(中华民国九十三年)5月3日可写作2004-05-03或R.O.C.93-05-03。

      日本工业规格JIS X 0301:2002与ISO8601:2000对应,但有修改。该标准写日期时用圆点(.)但非短横(-),可用公元年,也可对四种日本年号使用字首:

      明治(Meiji)可冠以M或明,自1868.01.01(同M01.01.01或明01.01.01)起至1912.07.30(同M45.07.30或明45.07.30)止。

      大正(Taisho)可冠以T或大,自1912.07.30(同T01.07.30或大01.07.30)起至1926.12.25(同T15.12.25或大15.12.25)止。

      昭和(Showa)可冠以S或昭,自1926.12.25(同S01.12.25或昭01.12.25)起至1989.01.07(同S64.01.07或昭64.01.07)止。

      平成(Heisei)可冠以H或平,自1989.01.08(同H01.01.08或平01.01.08)起至今。

    展开全文
  • 关于时间格式 2016-08-9T10:01:54.123Z 20160809100154.123Z 处理方法 ...//UTC时间,世界标准时间 2016-08-9T10:01:54.123Z 20160809100154.123Z 如图所示,这是一张由网友提供的图片,里面显示的是时间 UTC...
  • 整理一下c中关于标准时间格式和时间戳之间的相互转换。在标准时间格式和时间戳之间的转换中,有一个转换介质或者说是桥梁:时间结构体tm。对于两者的转换,都需要首先转换为tm结构体,再通过自带的函数即可转换成想...
  • 原文地址:http://blog.csdn.net/apple_llb/article/details/50837337Linux时间戳和标准时间的互转在LINUX系统中,有许多场合都使用时间戳的方式表示时间,即从... 下面介绍几种时间戳格式和标准时间格式转换的方法...
  • 时间戳 ,yyyy-mm-dd格式都可以通过 new Date()转换成中国标准时间: Tue Dec 31 2019 00:00:00 GMT+0800 (中国标准时间) new Date()的参数可以为空,可以为: 1、new Date("month dd,yyyy hh:mm:ss");...
  • 'Thu May 12 2016 08:00:00 GMT+0800 (中国标准时间)'--此格式日期无法传到java后台,须格式化,方法如下 var d = new Date('Thu May 12 2016 08:00:00 GMT+0800 (中国标准时间)'); var datetime=d.getFullYear()...
  • @python 将一串数字形式的时间转换为标准时间格式!!! 1.首先,确定你的那一串时间是10位还是13位的, 如果是10位请看方案一,13位请看解决方案二。 方案一: 10位的数字表示的是秒时间戳。 import time time.time...
  • 中国标准时间:Mon Oct 23 2017 17:20:13 GMT+0800 (中国标准时间) 时间戳:1508750413 毫秒数:1508750413000 注意:时间戳*1000就是毫秒数 日期或中国标准时间转毫秒数: //变量 ...
  • 标准时间格式即人一眼就能看懂的时间格式,比如:2017/11/28 15:00:00 unix时间戳格式,就是从1970年1月1日0点0分0秒(UTC/GMT的午夜)开始计时,所经过的秒数。 前端工作中有一次遇到需要从数据库中取出标准格式...
  • 中国标准时间格式:Sun Jul 08 2018 00:00:00 GMT+0800 (中国标准时间); 不理解什么是时间戳的可以自行百度; 将时间戳转为中国标准时间很简单,就下面这一行代码就可以了 const time = 1531065600000;//...
  • Mon Dec 09 22:06:24 格林尼治标准时间+0800 2013  大家通过我前几篇的博客已经知道我这几天深受时间转换的折磨。这一个小小的问题让我费了很长时间下面是对问题解决的一些记录 就已上边的日期为例为大家分析,希望...
  • 1.GMT时间  GMT,Greenwich MeanTime,中文名为格林尼治时间。英国的格林尼治这个城市在经度为零的地球经线上,所以地球以格林尼治所在的0度经线为标准,分为24个时区。...理论上来说,格林尼治标准时间
  • 封装了个函数将Java时间转换为标准时间: 效果图: js:  function todate(inputstr) { var startTime = inputstr.split(","); inputstr = inputstr + ""; //末尾加一个空格 var date ...
  • 类似Thu May 18 2017 00:00:00 GMT+0800 (中国标准时间)格式的时间转换成2017/05/18 或取其时分秒,方法如下: /** * @param datdString Thu May 18 2017 00:00:00 GMT+0800 (中国标准时间) * @return 年月日; ...
  • 我们在开发中,很多应用需要读取网络时间来作为一个时间标准,对业务逻辑进行相对可靠的校验。 下面是Java中(Android一样)读取网络时间的代码:package com.test;import java.io.IOException; import java.net....
  • Android C/C++代码中将时间戳转换为标准时间 在Android 底层C/C++代码中如何将时间戳转换为标准时间? 这个问题实质上可以理解为C/C++中如何将Linux的时间戳转换为标准时间,那么接下来就这个问题进行分析和处理。 ...
  • 输出标准时间格式,注意date和“+”号之间要有空格。 currTime=$(date +"%Y-%m-%d %T") echo $currTime #输出结果 2018-10-10 15:26:34  
1 2 3 4 5 ... 20
收藏数 1,589,601
精华内容 635,840
关键字:

标准时间