时间的故事 续篇
#关于时间,你真的都懂吗? 《续篇》 上一篇,开篇介绍了关于时间标准的定义,假如你能看到这里来,说明你是个渴望学知识的青年,至少还是能耐得住性子来学习的,这一篇将将分两个小节来介绍java编程语言和golang语言在处理时间具体问题上面是怎么处理的,为什么选择这两门语言,篇尾揭晓答案。 ###java版时间处理 java处理时间并不复杂,我要介绍的知识是处理的时候相关细节,java平台提供给我们操作日期基本涉及如下几个类: 1.Calender日历类,主要描述时间单位,例如年月日,时分秒,星期几,一年的第几周,注意这个是个抽象类,可能大多数开发人员没有太在意,下面将用代码详细描述。 2. Date日期类,主要描述时间变化,目前通行的方案是相当于unix 1970年1月1号 0时0分0秒时间的偏移豪秒数,作为时间推进的,定义时间的参考点,换句话来说,我们现在的日期都是计算机系统里面描述的时间,都是以这个为基准点,往后推进多少毫秒数,时间就往后推进多长时间,计算的标准方程式也很简单. time/1000 相当于 过了多少秒; time/(60*1000) 相当于过了多少分钟,依次类推。 3. TimeZone时区类,用于描述时间所处的时区,同一个时间,在世界不同时区,时间值不同;所以我们说时间,通常要带上具体是哪个地区时间,当然如果生活在一个地方,大家习以为常的省略了时区, 比如China 时区信息就是GMT+8 , 国际通行的格式是GMT+08:00 ,这个很重要,有些地方描述格式不一致,导致在很多地方,比如有些地方GMT+5 跨越半个时区,这样假如你用GMT+5.5来标示,国际上可是不认可的,正确的表达格式是GMT+5:30. 另外对于时区信息,不同城市有着自己特有的描述,方便在不同城市中活动的时候来准确描述时间信息,单纯地说GMT+0x:00或者GMT-0x:00,不是那么形象,比如洛杉矶时间、纽约时间、中国香港时间,巴黎时间,伦敦时间等,这些时间表达式在不考虑冬令时夏令时的情况下,基本和GMT时间存在一一对应关系。 America/Los_Angeles 洛杉矶时间 GMT-05:00 China/chongqing 重庆时间 GMT+08:00 China/shanghai 上海时间 GMT+08:00 Pacific/Auckland 奥克兰时间 GMT+12:00 4. SimpleDateFormat日期格式化类,用于描述时间的格式,对于不同国家阅读习惯,时间格式不尽相同,最大的不同体现在年月日的格式上 ,yyyy/MM/dd 标示“年月日” 或者 dd/MM/yyyy 标示“日月年”, 年月日,以及24小时制,java约定一套占位符,按照格式来输出对应的。 Calendar defaultDalendar = Calendar.getInstance(); // 通过操作系统配置的时区信息来初始化日期 Calendar calendarByTimeZone = Calendar.getInstance(TimeZone.getTimeZone("GMT+08:00")); //通过时区来初始化日历 Calendar calendarByZoneId = Calendar.getInstance(TimeZone.getTimeZone("America/Los_Angeles"));//通过时区ID初始化日期 ###golang版 golang 处理日期就比较简单,没有那么类配置,这就是面向对象和函数不同表达 ,api简洁,不多说,看代码就懂,不同的是 对于时间表达式,有些怪怪的。 ####时间格式化 “2006-01-02 15:04:05是golang的对于时间的Format的Layout”,。请看下表:
03/15 分别表示 12小时制/24小时制
###篇尾 重点关注 在golang中, 按照时区来做时间转换的时候,比如GMT+08:00转GMT-05:00 直接就是行不通的,执行会报错,当让我不知道是不是我了解的还不够透彻,我的理解是golang本身就不认可这种方式来处理时间,更加,更倾向于通过时区ID 来计算,比如"China/shanghai","America/Los_Angeles" 来做转换。 //当前时间 2017-01-01 01:01:01 转成洛杉矶时间 local,_ := time.LoadLocation("America/Los_Angeles") targetTime,_:= time.Parse(layout,"2017-01-01 01:01:01") fmt.Println(targetTime.In(local).Format(layout)) 知识,技术就讲到这里为止,再讲细节,这里面涉及到java 的时区信息包的更新工具,golang 更新时区报的,三篇绝对讲不完,所以尾篇,我将就时间的说说自己的感想,鸡汤也好,毒药也罢,总归算是一份感悟,倘若你是一个刚入职场的菜鸟,愿意看完这个系列完结篇,算是有始有终;假如你已经在职场打拼多年,在我要说的故事里,能看到你些许曾经的影子,也算是回忆曾经走过的日子。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |