`
michael8335
  • 浏览: 187027 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

关于Python时间的那些事儿

阅读更多

这段时间主要在河时间计算打交道,因此做了一个小小的总结,比较基础,觉得太基础和没有技术含量的请勿喷,本文所介绍的,一部分来自本人平时用过的,一部分翻译自python官方文档,还有部分摘自网络。

1、首先简单一下介绍在Python中常用的时间表示方式:1)时间戳 2)格式化的时间字符串 3)元组(struct_time)共九个元素;

2Python中用于时间处理的总共有三个模块:timedatetimecalendar

Time模块:

1time.localtime([secs]):将一个时间戳转换为当前时区的struct_timesecs参数未提供,则以当前时间为准(即time.localtime(time.time())

2time.gmtime([secs]):和localtime()方法类似,gmtime()方法是将一个时间戳转换为UTC时区(0时区)的struct_time(即time. gmtime (time.time())

3time.time():返回当前时间的时间戳。

4time.mktime(t):将一个struct_time转化为时间戳。

5time.sleep(secs):线程推迟指定的时间运行。单位为秒。

6time.asctime([t]):把time.gmtime() 或者 time.localtime()返回的元组或者struct_time格式的时间转换为字符串格式的时间,如Sun Jun 2023:21:05 1993,如果t为空,则默认为time. localtime()

8time.ctime([secs]):把一个时间戳(按秒计算的浮点数)转化为time.asctime()的形式。如果参数未给或者为None的时候,将会默认为time.time()

9time.strftime(format[, t]):把一个由time.localtime()time.gmtime()返回的元组或者struct_time转化为格式化的时间字符串

10time.strptime(string[, format]):把一个格式化时间字符串转化为struct_time。实际上它是strftime()的逆操作

11time.timezone:当前时区与格林威治时间相差的秒数,例如中国为-28800-8*3600)通过这个属性可以判断当前的时区。

Datetime模块:

datetime模块定义了下面这几个类:

  • datetime.date:表示日期的类。常用的属性有year, month, day
  • datetime.time:表示时间的类。常用的属性有hour, minute, second, microsecond
  • datetime.datetime:表示日期时间。
  • datetime.timedelta:表示时间间隔,即两个时间点之间的长度。
  • datetime.tzinfo:与时区有关的相关信息

这里主要介绍两个类:

一、datetime.date

1date.replace(year, month, day):返回date对象的实际值,如果参数值与date对象的实际值不相等时,则返回date对象修改后的新值,但是date对象的原值不改变。例如

>>> import datetime

>>> d=datetime.date(2013,12,12)

>>> print d

2013-12-12

>>> print d.replace()

2013-12-12

>>> print d.replace(day=2)

2013-12-02

>>> print d

2013-12-12

2date.timetuple():返回一个struct_time格式的时间,功能和time.localtime()类似

3date.weekday():返回date对象所对应时间是星期几(值从06,周日为0,周六为6),例如:

>>> import datetime

>>> d=datetime.date(2013,02,28)

>>> print d.weekday()

3

4date.isocalendar():返回一个元组:(ISO year(格林威治年份), ISO week number(格林威治周数), ISO weekday(格林威治周几))

5date.strftime(format):返回date对象format格式的值。

>>> import datetime

>>> d=datetime.date(2013,02,28)

>>> print d. strftime(“%d%m%y”)

‘28/03/13’

6date.isoformat():返回date对象的标准格式值,格式为‘YYYY-MM-DD’

二、datetime.datetime

<!--[if !supportLists]-->1)  <!--[endif]-->datetime.today():返回当前的本地时间

2datetime.now([tz]):当tzNone时,返回当前的本地时间(与datetime.today()相同),该方法能够返回一个比time.time()更精确的时间戳。

3datetime.utcnow():返回当前的UTC时间

4datetime.fromtimestamp(timestamp[, tz]),根据时区和时间戳,返回一个date对象,timestamp必须为POSIX标准时间戳,如果tz为空,则返回一个本地date对象

5datetime.utcfromtimestamp(timestamp),与datetime.fromtimestamp相似,但是返回的是一个标准的格林威治date对象

6datetime.strptime(date_stringformat):按照 format格式返回一个date_string对应的datetime对象

7datetime.strftime(format):按照format格式,返回date对象的值(字符串)

 PS1, datetime对象的一些实例:

>>> from datetime import datetime, date, time

>>> # Using datetime.combine()

>>> d = date(2005, 7, 14)

>>> t = time(12, 30)

>>> datetime.combine(d, t)

datetime.datetime(2005, 7, 14, 12, 30)

>>> # Using datetime.now() or datetime.utcnow()

>>> datetime.now()  

datetime.datetime(2007, 12, 6, 16, 29, 43, 79043)   # GMT +1

>>> datetime.utcnow()  

datetime.datetime(2007, 12, 6, 15, 29, 43, 79060)

>>> # Using datetime.strptime()

>>> dt = datetime.strptime("21/11/06 16:30", "%d/%m/%y %H:%M")

>>> dt

datetime.datetime(2006, 11, 21, 16, 30)

>>> # Using datetime.timetuple() to get tuple of all attributes

>>> tt = dt.timetuple()

>>> for it in tt:  

...     print it

...

2006    # year

11      # month

21      # day

16      # hour

30      # minute

0       # second

1       # weekday (0 = Monday)

325     # number of days since 1st January

-1      # dst - method tzinfo.dst() returned None

>>> # Date in ISO format

>>> ic = dt.isocalendar()

>>> for it in ic:  

...     print it

...

2006    # ISO year

47      # ISO week

2       # ISO weekday

>>> # Formatting datetime

>>> dt.strftime("%A, %d. %B %Y %I:%M%p")

'Tuesday, 21. November 2006 04:30PM'

 

PS2,datetime带时区的一些实例:

>>> from datetime import timedelta, datetime, tzinfo

>>> class GMT1(tzinfo):

...     def utcoffset(self, dt):

...         return timedelta(hours=1) + self.dst(dt)

...     def dst(self, dt):

...         # DST starts last Sunday in March

...         d = datetime(dt.year, 4, 1)   # ends last Sunday in October

...         self.dston = d - timedelta(days=d.weekday() + 1)

...         d = datetime(dt.year, 11, 1)

...         self.dstoff = d - timedelta(days=d.weekday() + 1)

...         if self.dston <=  dt.replace(tzinfo=None) < self.dstoff:

...             return timedelta(hours=1)

...         else:

...             return timedelta(0)

...     def tzname(self,dt):

...          return "GMT +1"

...

>>> class GMT2(tzinfo):

...     def utcoffset(self, dt):

...         return timedelta(hours=2) + self.dst(dt)

...     def dst(self, dt):

...         d = datetime(dt.year, 4, 1)

...         self.dston = d - timedelta(days=d.weekday() + 1)

...         d = datetime(dt.year, 11, 1)

...         self.dstoff = d - timedelta(days=d.weekday() + 1)

...         if self.dston <=  dt.replace(tzinfo=None) < self.dstoff:

...             return timedelta(hours=1)

...         else:

...             return timedelta(0)

...     def tzname(self,dt):

...         return "GMT +2"

...

>>> gmt1 = GMT1()

>>> # Daylight Saving Time

>>> dt1 = datetime(2006, 11, 21, 16, 30, tzinfo=gmt1)

>>> dt1.dst()

datetime.timedelta(0)

>>> dt1.utcoffset()

datetime.timedelta(0, 3600)

>>> dt2 = datetime(2006, 6, 14, 13, 0, tzinfo=gmt1)

>>> dt2.dst()

datetime.timedelta(0, 3600)

>>> dt2.utcoffset()

datetime.timedelta(0, 7200)

>>> # Convert datetime to another time zone

>>> dt3 = dt2.astimezone(GMT2())

>>> dt3    

datetime.datetime(2006, 6, 14, 14, 0, tzinfo=<GMT2 object at 0x...>)

>>> dt2    

datetime.datetime(2006, 6, 14, 13, 0, tzinfo=<GMT1 object at 0x...>)

>>> dt2.utctimetuple() == dt3.utctimetuple()

True

Calendar

1calendar.isleap(year):判断year是否为闰年,如果是闰年则返回True,否则返回False

2calendar.weekday(yearmonthday):根据yearmonthday组成的日期判断该天为周几

3calendar.monthrange(yearmonth):判断由yearmonth组成月份,返回该月第一天为周几和该月总共有多少天

1
2
分享到:
评论

相关推荐

    可爱的python--python入门教学

    Python中有多种库可以帮助实现图形用户界面(GUI),如Tkinter、PyQt等。通过这些库,可以轻松地添加按钮、文本框等控件,提高用户体验。 #### 优化!多线程 当程序需要处理大量数据或执行耗时任务时,使用多线程...

    读书笔记数据分析学习总结(一):数据分析那些事儿整理.pdf

    4. 数据分析:使用适当的分析方法(如描述性统计、推断性统计、关联分析等)和工具(如Excel、SPSS、R或Python),对处理后的数据进行深度分析,寻找模式和趋势。 5. 数据展现:通过图表形式呈现数据,如饼图、柱状...

    model_lt_ic_

    在IT领域,模型构建是数据分析和机器学习中的关键步骤,而“model_lt_ic_”这一标题可能指的是一个特定的模型实现,结合描述,我们可以推测这是一个关于独立级联(Independent Cascade, IC)模型和线性阈值(Linear ...

    理解python多线程(python多线程简明教程)

    对于python 多线程的理解,我花了很长时间,搜索的大部份文章都不够通俗易懂。所以,这里力图用简单的例子,让你对多线程有个初步的认识。 单线程  在好些年前的MS-DOS时代,操作系统处理问题都是单任务的,我想做...

    老生常谈进程线程协程那些事儿

    一、进程与线程 1.进程 我们电脑的应用程序,都是进程,假设我们...数据集是程序执行过程中所使用的资源;进程控制块用来保存程序运行的状态 2.线程 一个进程中可以开多个线程,为什么要有进程,而不做成线程呢?因为一

    python多线程就这么简单

    对于python多线程的理解,我花了很长时间,搜索的大部份文章都不够通俗易懂。所以,这里力图用简单的例子,让你对多线程有个初步的认识。在好些年前的MS-DOS时代,操作系统处理问题都是单任务的,我想做听音乐和看...

    07丨链表(下):如何轻松写出正确的链表代码?1

    指针是C语言中的概念,它存储了对象的内存地址,而引用在Java和Python等语言中类似,也用来指向对象。在链表中,`p-&gt;next=q`表示p节点的next指针指向q节点,`p-&gt;next=p-&gt;next-&gt;next`表示p节点的next指针跳过当前节点...

    Numpy与Pandas库使用教学PPT(共87P)

    Numpy与Pandas库使用教学PPT(共87P),详细介绍了python最常用的两个库数值计算库numpy和数据表计算库pandas-号称python中的excel,实际上它的功能远高于excel,掌握好这两个库,打好基础,后面的python金融、...

    详解配置Django的Celery异步之路踩坑

    人生苦短,我用python。 看到这句话的时候,感觉可能确实是很深得人心,不过每每想学学,就又止步,年纪大了,感觉学什么东西都很慢,很难,精神啊注意力啊思维啊都跟不上。...目前奶牛所在的时间redis fo

    DevOps:自动化运维指南 https

    Java和Docker限制的那些事儿 适用于CI容器漏洞扫描神器 终于有人把 Docker 讲清楚了,万字详解! Docker 网络配置那些事 解密 Docker 挂载文件,宿主机修改后容器里文件没有修改 推荐两个Docker配置检查与启动异常...

    机器学习算法配套案例实战.zip

    探索性数据分析/ 支持向量机/ word2vec/ 贝叶斯-拼写检查器.zip 贝叶斯-新闻分类.zip 贝叶斯Python文本分析.zip 降维算法.zip 聚类算法.zip 决策树.zip 科比数据集分析.zip ...Python时间序列.zip Xgboost调参.zip

    一个好用的代码行统计工具,找了好久才找到的哦

    1. **多语言支持**:SourceCounter可能能够处理多种编程语言,如Java、Python、C++、JavaScript等,确保了对各种项目的支持。 2. **分类统计**:工具可能区分了代码、注释和空行,提供详细的统计报告,帮助开发者...

    ippicv_2019_lnx_intel64_general_20180723.tgz

    1. **性能优化**:通过使用Intel的硬件加速技术,IPPICV能够以比标准C++或Python代码更快的速度执行计算密集型任务,从而提高了整个OpenCV应用的运行效率。 2. **广泛的函数集**:IPPICV提供了大量的图像处理函数,...

Global site tag (gtag.js) - Google Analytics