搜索

方便用户依据不同的使用目的选用趁手的模块

处理时间一共有三个模块,只有将三个模块集成在一起,才能随心所欲地使用处理时间。这篇文章就是为此而写的。文章的重点是梳理三个模块的设计脉络,让大家记住里面的API。需要的时候可以找到对应的方法。但由于模块使用有限,篇幅所限,本文不涉及。

1 概述

该模块主要用来表示日期,也就是我们常说的年月日时分秒。该模块主要用于表示年、月、日、星期几。time模块主要关注时分秒,大致从上看,我们可以认为三者是一种互补的关系,各自关注一个领域。方便用户根据不同的使用目的选择方便的模块。

2.从time模块开始学习time模块,我们需要知道几个与时间相关的概念:

(1)epoch假设我们要将时间表示为毫秒,比如毫秒,那么有一个问题就是必须解决,这个毫秒的起点是什么,也就是我们的时间基准点是什么?比如我说你1.8米高,那么这个高度就是指你站立的地面。这个时间参考点是纪元。在Unix系统中,这个参考点是1970年1月1日0:00的时间点。

(2)GMT,UTC 上面我们说了epoch代表1970年的起点,那么这个1970年相对于哪个参考时间呢?一般来说,它是相对于格林威治标准时间,也称为GMT(Mean Time)时间,或UTC(Time)。为什么一个时基有两个名字?从历史上看,首先是 GMT,然后是 UTC。

UTC 是我们现在使用的时间标准,而 GMT 是旧的时间测量标准。UTC根据原子钟计算时间,而GMT根据地球自转和公转计算时间。因此,可以认为UTC是真正的参考时间,GMT与UTC的偏差为0。在实践中,我们的计算机中有一个硬件模块RCT,它会实时记录UTC时间。本模块采用独立电池供电,即使关机也不受影响。因此,可以认为UTC是真正的参考时间,GMT与UTC的偏差为0。在实践中,我们的计算机中有一个硬件模块RCT,它会实时记录UTC时间。本模块采用独立电池供电,即使关机也不受影响。因此,可以认为UTC是真正的参考时间,GMT与UTC的偏差为0。在实践中,我们的计算机中有一个硬件模块RCT,它会实时记录UTC时间。本模块采用独立电池供电,即使关机也不受影响。

有了epoch的时间参考和UTC的参考,我们就可以准确的表示一个时间。(3) DST, tzone 虽然我们可以准确的表达一个时间,但是在很多时候,我们还是需要根据区的实际情况来调整时间,最常见的就是时间区, tzone,相信大家都不陌生。这时候我们在说5:5的时间的时候,需要加上5:5的时间区来准确描述一个时间。另一个时间调整是 DST。DST的全称是Time,意思是为了充分利用阳光,减少电力消耗,对时间进行人为调整,具体取决于不同国家和地区的区。政策法规。例如,假设你在冬天 7 点起床,但 6 点天就亮了 clock in ,然后在夏天来的时候人为的加1小时,这样你还以为自己是7点起床,其实早了一个小时。那么,如果我们好奇的话,就要问了,我们怎么知道tzone和DST的值呢?答案是通过环境变量。这里我们仅以linux为例进行说明。linux中有一个TZ环境变量,它的值类似这样:CST+08EDT,M4.1.0,M10.5.0,这个字符串可以这样解释,用空格分隔,分为三部分CST+08 EDT,M4 .1.0,M10.5.0第一部分的CST表示区的名称,即China Time,也就是我们所说的北京时间,+8表示北京时间加8小时为UTC时间。EDT 的第二部分表示 DST 的名称,我们说夏令时是不同的,因为各国的政策法规不同区。EDT 后面也可以跟一个时间调整值,比如 CST。不过由于我国只实行了1986年到1992年的一个时间DST,现在已经取消了,所以后面的时间也没有必要再调整了。

第三部分表示执行夏令时的起止时间,我们不再详细解读。(4) 时间的表示、获取和转换时间模块中获取时间的基本方法是t = time.time(),它返回从纪元到现在的秒数(用浮点数表示),使用世界标准时间。我们自然要将这个秒数转换成年月日时分秒的形式,转换有两种,一种还是使用UTC时间,一种是调整后的时间使用我们的当前 区 。time 模块为我们提供了两个方法,time.(t)time.(t) 都返回一个具有以下属性的类的实例:

这种表示比以秒表示的时间更适合我们的理解。如果不带参数调用这两个函数,它们会在内部调用time.time(),并使用返回的秒数进行转换。相反,它还提供了将这两个转换为秒的方法。.()方法用于将UTC(返回对象)转换为从纪元时间开始的秒数。()方法用于将时间区调整后的(即返回对象)对象转换为从纪元开始的秒数of 表示该方法会先在系统中查找时间区和夏令时信息,并利用这些信息调整时间,然后将其转换为秒。另一个常见的需求是在时间和表示时间的字符串之间进行转换。时间模块中的总和就是这样做的。看名字就应该知道它们的意思了,就是time,用来把时间格式化成字符串,也就是parse time,用来把字符串解析成时间。需要注意的是,这里的时间是一个对象。如何格式化时间是很简单的知识,这里是官网文档的内容。

除了这两个函数,时间模块还提供了两个方便的方法来帮助时间转字符串将一个对象转为标准的24个字符的字符串,如下: Sun Jun 20 23:21: 05 该方法是和函数一样,只是它接收的是秒数,内部会先把秒数转换成,然后就一样了。以上就是时间模块的核心内容。我尝试用一​​个公式来帮助记住这些点的秒数并将它们传递给gm。如果要将本地时间改回原来的秒数,则必须发回。和时间。f和p兄弟格式化时间,你还是觉得麻烦cst时间换算北京时间,ctime就是来帮你转换字符串的,前者接收后者,后者专门处理秒。分工合作并不费力。做好时间模块的基本功,做一个懂时间的人!接下来,我们要开始学习模块了。

三、模块(一)概述 时间模块解决了时间的获取和表示,该模块进一步解决了快速获取和操作时间中的年月日时分秒信息的能力。简单的说,这个模块有3个核心类。日期类表示年、月、日,时间类表示时、分、秒、毫秒。不要将它与此处的时间模块混淆。一首顺口溜可以帮助记住这种情况:时间没有时间,补上不是坏事吗?嗯,我也这么认为。该类是日期和时间的组合。有一点需要提前说明,时间类和类都有一个属性,它的值是一个对象,里面包含了时间或者时间的区信息,一般这个时间或者对象是知道的,它可以准确地转换为自纪元以来的秒数。如果这个属性设置为None,那么此时的时间对象或者对象是没有时间区信息的。具体是代表本地时间还是utc时间,需要我们在程序中自行决定。请记住日期中没有区信息。我们这里说的本地时间是指我们在区时的时间,而utc时间是指国际标准时间,也就是格林威治标准时间。下同。请记住日期中没有区信息。

(2)从创建对象,我最常用的方法如下dt=..(time.time())上面,time.time()获取的是从epoch开始的秒数,方法会把这个秒数进行转换成一个对象。这里有个问题,这个对象是UTC还是local?答案是局部的,这是该方法的默认行为。如果传入一个时间区参数
方便用户依据不同的使用目的选用趁手的模块(组图),即一个对象,在方法中,会根据传入的时间区信息进行转换,有两种方便的方式获取表示的对象当前本地时间。. 现在()。. today() 上面获取的都是本地对象,如何获取utc对象呢?有两种方法。. (). . () 我们也可以从一个字符串创建一个对象。方法是 .(, ) 时间模块中的方法首先被调用获取对象,

同样cst时间换算北京时间,该类还提供了()、()、ctime()方法,相信不用说也知道它们是干什么的。该类还提供了一种将日期对象和时间对象合并为一个对象的方法。需要注意的是,当它出现在模块中时,一般可以理解为time.time()返回的秒数 (3) 日期和时间的创建与日期对象的创建非常相似,.date .今天().日期。() 可以创建日期对象。当然你也可以通过构造函数传入年月日来创建一个日期对象。相比之下,时间对象的创建非常有限,只能通过方法.time([hour[, [, [, [, [, ]]]]])来创建。(4)在实际使用上述三个对象的操作和类时,我们有一个很大的需求来比较和加减日期。

© 版权声明
THE END
喜欢就支持一下吧
点赞14赞赏 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码

    暂无评论内容