首页 > 编程语言 > 详细

Python,datetime笔记。

时间:2019-11-11 09:18:37      阅读:73      评论:0      收藏:0      [点我收藏+]

time今天刚结束,趁热打铁,把datetime也干掉算了。看了一般调试电脑去了,现在回来了。

前面学的date感觉更多的是面向过程的,里面用的很多函数。

那datetime更加像一个面向对象的操作。

网上查了点资料,书上看了一些,准备挑一些自己认为的重点讲一下算了。

先说一下datetime.datetime好了,以前我就一直会用datetime.datetime.now()

当运行一个d1=datetime.datetime.now()或者d1=datetime.datetime.(2019,1,1)

其实本质是在完成实例化,所以,该对象d1会又很多定义的方法,属性。

由于是对实例的操作,不同的实例之间还能进行一些加减操作,返回datetime.timedelta对象。

In [244]: d1 = datetime.datetime(1985,11,5)                                                  

In [245]: d2 = datetime.datetime.now()                                                       

In [246]: isinstance(d1,datetime.datetime)                                                   
Out[246]: True

In [247]: d1-d2                                                                              
Out[247]: datetime.timedelta(days=-12425, seconds=74030, microseconds=689037)

In [248]: d1.isoweekday                                                                      
Out[248]: <function datetime.isoweekday>

In [249]: d1.isoweekday()                                                                    
Out[249]: 2

In [251]: datetime.datetime.fromtimestamp(time.time())                                       
Out[251]: datetime.datetime(2019, 11, 11, 3, 35, 10, 555170)

In [252]: datetime.datetime.now()                                                            
Out[252]: datetime.datetime(2019, 11, 11, 3, 35, 18, 959855)

datetime.datetime.fromtimestamp(time.time()) 还可以用时间戳来创建一个时间对象。

这里简单的做了一个代码说明,对象又很多属性。(我感觉可能比较使用的准备标注红色)

datetime 实例方法:

datetime.date()
- 返回一个 date 对象datetime.time() - 返回一个 time 对象(tzinfo 属性为 None)

datetime.timetz()
- 返回一个 time() 对象(带有 tzinfo 属性)

datetime.replace([year[, month[, day[, hour[, minute[, second[, microsecond[, tzinfo]]]]]]]])
- 生成一个新的日期对象,用参数指定日期和时间代替原有对象中的属性

datetime.astimezone(tz=None)
- 传入一个新的 tzinfo 属性,返回根据新时区调整好的 datetime 对象

datetime.utcoffset()
- 如果 tzinfo 属性是 None,则返回 None;否则返回 self.tzinfo.utcoffset(self)

datetime.dst()
- 如果 tzinfo 属性是 None,则返回 None;否则返回 self.tzinfo.dst(self)

datetime.tzname()
- 如果 tzinfo 属性是 None,则返回 None;否则返回 self.tzinfo.tzname(self)

datetime.timetuple()
-  返回日期对应的 time.struct_time 对象(类似于 time 模块的 time.localtime())

datetime.utctimetuple()
- 返回 UTC 日期对应的 time.struct_time 对象

datetime.toordinal()
- 返回日期对应的 Gregorian Calendar 日期(类似于 self.date().toordinal())

datetime.timestamp()
- 返回当前时间的时间戳(类似于 time 模块的 time.time())

datetime.weekday()
- 返回 0 ~ 6 表示星期几(星期一是 0,依此类推)

datetime.isoweekday()
- 返回 1 ~ 7 表示星期几(星期一是1, 依此类推)

datetime.isocalendar()
返回一个三元组格式 (year, week, day) # 第二个元素是“year中的第几周”,第三个元素是“该周的第几天”

datetime.isoformat(sep=‘T‘)
- 返回一个 ISO 8601 格式的日期字符串,如 "YYYY-MM-DD" 的字符串

datetime.__str__()
- 对于 date 对象 d 来说,str(d) 相当于 d.isoformat()

datetime.ctime()
- 返回一个表示日期的字符串,相当于 time 模块的 time.ctime(time.mktime(d.timetuple()))

datetime.strftime(format)
- 返回自定义格式化字符串表示日期,下面有详解

datetime.__format__(format)
- 跟 datetime.strftime(format) 一样,这使得调用 str.format() 时可以指定 data 对象的字符串

其实看的过程中,我觉的最方便的还是datetime.timedelta,这个能非常方便的让你找到前一天或者后一天的日期。

In [254]: d2                                                                                 
Out[254]: datetime.datetime(2019, 11, 11, 3, 26, 9, 310963)

In [255]: t_pass = datetime.timedelta(2)                                                     

In [256]: d2+t_pass                                                                          
Out[256]: datetime.datetime(2019, 11, 13, 3, 26, 9, 310963)

In [257]: d2 -t_pass                                                                         
Out[257]: datetime.datetime(2019, 11, 9, 3, 26, 9, 310963)

 一个 datetime.timedelta 类,你需要将指定的时间段传递给类的构造函数。可选参数包含:weeks,days (默认), hours, minutes, seconds, microseconds

 

最后讲一下strftime方法,里面的参数跟time.strftime函数里面的差不多。

 

格式化指令 含义
%a 星期的简写(星期一 ~ 天:Mon, Tue, Wed, Thu, Fri, Sat, Sun)
%A 星期的全写(星期一 ~ 天:Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday)
%w 在一个星期中的第几天( 0 表示星期天 ... 6 表示星期六)
%d 在一个月中的第几天(01, 02, ..., 31)
%b 月份的简写(一月 ~ 十二月:Jan, Feb, Mar, Apr, May, Jun, Jul, Aug, Sep, Oct, Nov, Dec)
%B 月份的全写(一月 ~ 十二月:January, February, March, April, May, June, July, August, September, October, November, December)
%m 月份(01, 02, ..., 12)
%y 用两个数字表示年份(例如 2014年 == 14)
%Y 用四个数字表示年份
%H 二十四小时制(00, 01, ..., 23)
%I 十二小时制(01, 02, ..., 11)
%p AM 或者 PM
%M 分钟(00, 01, ..., 59)
%S 秒(00, 01, ..., 59)
%f 微秒(000000, 000001, ..., 999999)
%z 与 UTC 时间的间隔 ;如果是本地时间,返回空字符串((empty), +0000, -0400, +1030)
%Z 时区名称;如果是本地时间,返回空字符串((empty), UTC, EST, CST)
%j 在一年中的第几天(001, 002, ..., 366)
%U 在一年中的第几周,星期天作为第一天(00, 01, ..., 53)
%W 在一年中的第几周,星期一作为第一天(00, 01, ..., 53)
%c 用字符串表示日期和时间(Tue Aug 16 21:30:00 2014)
%x 用字符串表示日期(08/16/14)
%X 用字符串表示时间(21:30:00)
%% 表示百分号

 

 

可以再对象后面根据需要填写参数。

 

In [258]: d2                                                                                 
Out[258]: datetime.datetime(2019, 11, 11, 3, 26, 9, 310963)

In [259]: d2.strftime(‘%Y-%m-%d:%H.%M.%s‘)                                                   
Out[259]: ‘2019-11-11:03.26.1573413969‘

In [260]: d2.strftime(‘%Y-%m-%d:%H.%M.%S‘)                                                   
Out[260]: ‘2019-11-11:03.26.09‘

In [261]: d2.strftime(‘%A %Y-%m-%d:%H.%M.%S‘)                                                
Out[261]: ‘Monday 2019-11-11:03.26.09‘

 

 

datetime的模块就重点这里讲一些,后面三个参考链接。有需要用的到,可以参考下。

 

datetime 模块详解(基本的日期和时间类型)

https://fishc.com.cn/forum.php?mod=viewthread&tid=51725&extra=&highlight=datetime&page=1

https://www.cnblogs.com/awakenedy/articles/9182036.html

https://blog.csdn.net/weixin_42232219/article/details/89838580

 

datetime.is
 

Python,datetime笔记。

原文:https://www.cnblogs.com/sidianok/p/11832621.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!