笔记-python-standard library-8.1 data types-datetime
笔记-python-standard library-8.1 data types-datetime
1. Datatimes
本章节内容为日期和时间处理类和方法。
1.1. datetime-basic date and time types
source code: Lib/datetime.py
datetime模块提供了日期和时间处理类,重点是各种格式化的输出。
时间包括两种,世界时和当地时间。
datetime和time对象可以选定时区。
datetime模块提供了下列常量:
datetime.MINYEAR,datetime.MAXYEAR分别是1和9999。
相关模块calendar日历功能,time时间访问和转换
1.1.1. 可用的类型
datetime.date:表示日期
datetime.time:表示时间
datetime.datetime:表示日期+时间
datetime.timedelta:表示两个日期,时间或日期+时间之间的差值
datetime.tzinfo:时区相关信息
datetime.timezone
类继承关系图:
object
timedelta
tzinfo
timezone
time
date
datetime
1.1.2. timedelta objects
timedelta:两个时间之差。
class datetime.timedelta(days=0, seconds=0,microseconds=0,milliseconds=0,minutes=0, hours=0,weeks=0)
实例属性(只读):
Attribute |
Value |
days |
Between -999999999 and 999999999 inclusive |
seconds |
Between 0 and 86399 inclusive |
microseconds |
Between 0 and 999999 inclusive |
支持的操作
t1 = t2+t3 or t1= t2-t3 |
|
t1= t2*I |
|
f = t2/t3 |
return a float object |
t1 = t2//i |
|
t1 = t2%t3 |
|
q,r = divmod(t1,t2) |
实例方法:
timedelta.total_seconds() 返回时间差,以秒为单位。
1.1.3. date objects
class datetime.date(year,month,day)
class methods:
date.today() 返回当日日期
date.fromtimestamp(timestamp) 根据时间戳返回日期
date.fromordinal(ordinal) 将Gregorian日历时间转换为date对象
class attributes:
date.year, date.month, date.day
supported operations:
Operation |
Result |
date2 = date1 + timedelta |
date2 is timedelta.days days removed from date1. (1) |
date2 = date1 - timedelta |
Computes date2 such that date2 + timedelta == date1. (2) |
timedelta = date1 - date2 |
(3) |
date1 < date2 |
date1 is considered less than date2 when date1 precedes date2 in time. (4) |
instance methods:
date.replace(year=self.year, month=self.month, day=self.day)
根据参数返回一个替代后的日期。
date.timetuple()
Return a time.struct_time such as returned by time.localtime(). The hours, minutes and seconds are 0, and the DST flag is -1. d.timetuple()is equivalent to time.struct_time((d.year, d.month, d.day, 0, 0, 0, d.weekday(), yday, -1)), where yday = d.toordinal() - date(d.year, 1,1).toordinal() + 1 is the day number within the current year starting with 1 for January 1st.
示例:
>>> a = datetime.date(2017,3,22)
>>> a.timetuple() time.struct_time(tm_year=2017, tm_mon=3, tm_mday=22, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=2, tm_yday=81, tm_isdst=-1)
>>> a.timetuple().tm_year
2017
>>> a.timetuple().tm_mon
3
>>> a.timetuple().tm_mday
22
date.weekday()
以数值形式返回星期,注意星期一是0,星期天是6。
date.isoweekday()
与上一函数相同,但星期数值是1-7
date.isocalendar()
Return a 3-tuple, (ISO year, ISO week number, ISO weekday).
date.isoformat()
Return a string representing the date in ISO 8601 format, ‘YYYY-MM-DD’. For example, date(2002, 12, 4).isoformat() == '2002-12-04'.
date.__str__()
等效于date.isoformat()
date.ctime()
返回特定格式的日期 date(2002, 12, 4).ctime() == 'Wed Dec 4 00:00:00 2002'.
date.strftime(format)
date.__format__(format)
都是返回特定格式的日期字符串。
下面是一些日期格式转换的示例:
>>> from datetime import date
>>> d = date.fromordinal(730920) # 730920th day after 1. 1. 0001
>>> d
datetime.date(2002, 3, 11)
>>> t = d.timetuple()
>>> for i in t:
... print(i)
2002 # year
3 # month
11 # day
0
0
0
0 # weekday (0 = Monday)
70 # 70th day in the year
-1
>>> ic = d.isocalendar()
>>> for i in ic:
... print(i)
2002 # ISO year
11 # ISO week number
1 # ISO day number ( 1 = Monday )
>>> d.isoformat()
'2002-03-11'
>>> d.strftime("%d/%m/%y")
'11/03/02'
>>> d.strftime("%A %d. %B %Y")
'Monday 11. March 2002'
>>> 'The {1} is {0:%d}, the {2} is {0:%B}.'.format(d, "day", "month")
'The day is 11, the month is March.'
1.1.4. datetime objects
class datetime.datetime(year, month, day, hour=0, minute=0, second=0, microsecond=0, tzinfo=None, *, fold=0)
class methods:
datetime.today()
返回日期时间,结果如下:datetime.datetime(2018, 9, 29, 21, 16, 9, 954626)
datetime.now(tz=None)
返回日期时间,如果tz非空,返回一个tzinfo子类,时间进行转换。
datetime.utcnow() 返回utc时间。
datetime.fromtimestamp(timestamp, ta=None) 根据给出的时间戳返回时日期时间。
datetime.utcfromtimestamp(timestamp) 返回utc日期时间
datetime.fromordinal(ordinal) 返回Gregorian日期时间
datetime.combine(date,time.tzinfo=self.tzinfo) 将date和time对象合并成datetime对象
datetime.strptime(date_string, format) 根据参数,返回datetime对象
class attributes:
datetime.year
datetime.month
datetime.day
datetime.hour
datetime.minute
datetime.second
datetime.microsecond
datetime.tzinfo
datetime.fold
support operations:
Operation |
Result |
datetime2 = datetime1 + timedelta |
(1) |
datetime2 = datetime1 - timedelta |
(2) |
timedelta = datetime1 - datetime2 |
(3) |
datetime1 < datetime2 |
Compares datetime to datetime. (4) |
instance methods:
date(),time(),timetz(),
replace(year=self.year, month=self.month, day=self.day, hour=self.hour, minute=self.minute, second=self.second, microsecond=self.microsecond, tzinfo=self.tzinfo, * fold=0)
astimezone(tz=None)
utcoffset(), dst(),tzname(), timetuple(),utctimetuple()
timestamp()
weekday()
isoweekday()
isocalendar()
isoformat(sep=’T’, timespec=’auto’)
__str__()
ctime()
strftime(format)
__format__(format)
Examples of working with datetime objects:
>>>
>>> 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'
>>> 'The {1} is {0:%d}, the {2} is {0:%B}, the {3} is {0:%I:%M%p}.'.format(dt, "day", "month", "time")
'The day is 21, the month is November, the time is 04:30PM.'
Using datetime with tzinfo:
>>>
>>> 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
1.1.5. time objects
class datetime.time(hour=0, minute=0, second=0, microsecond=0, tzinfo=None, *, fold=0)
instance attributes(read-only):
hour,minute,second,microsecond,tzinfo,fold
supported operations:
- comparison of time to time.
- hash, use as dict key
- efficent pickling
instance methods:与date,datetime没什么太大不同,不重复了。
1.1.6. strftime() and strptime() behavior
Directive |
Meaning |
Example |
%a |
Weekday as locale’s abbreviated name. |
Sun, Mon, …, Sat (en_US); So, Mo, …, Sa (de_DE) |
%A |
Weekday as locale’s full name. |
Sunday, Monday, …, Saturday (en_US); Sonntag, Montag, …, Samstag (de_DE) |
%w |
Weekday as a decimal number, where 0 is Sunday and 6 is Saturday. |
0, 1, …, 6 |
%d |
Day of the month as a zero-padded decimal number. |
01, 02, …, 31 |
%b |
Month as locale’s abbreviated name. |
Jan, Feb, …, Dec (en_US); Jan, Feb, …, Dez (de_DE) |
%B |
Month as locale’s full name. |
January, February, …, December (en_US); Januar, Februar, …, Dezember (de_DE) |
%m |
Month as a zero-padded decimal number. |
01, 02, …, 12 |
%y |
Year without century as a zero-padded decimal number. |
00, 01, …, 99 |
%Y |
Year with century as a decimal number. |
0001, 0002, …, 2013, 2014, …, 9998, 9999 |
%H |
Hour (24-hour clock) as a zero-padded decimal number. |
00, 01, …, 23 |
%I |
Hour (12-hour clock) as a zero-padded decimal number. |
01, 02, …, 12 |
%p |
Locale’s equivalent of either AM or PM. |
AM, PM (en_US); am, pm (de_DE) |
%M |
Minute as a zero-padded decimal number. |
00, 01, …, 59 |
%S |
Second as a zero-padded decimal number. |
00, 01, …, 59 |
%f |
Microsecond as a decimal number, zero-padded on the left. |
000000, 000001, …, 999999 |
%z |
UTC offset in the form +HHMM or -HHMM (empty string if the object is naive). |
(empty), +0000, -0400, +1030 |
%Z |
Time zone name (empty string if the object is naive). |
(empty), UTC, EST, CST |
%j |
Day of the year as a zero-padded decimal number. |
001, 002, …, 366 |
%U |
Week number of the year (Sunday as the first day of the week) as a zero padded decimal number. All days in a new year preceding the first Sunday are considered to be in week 0. |
00, 01, …, 53 |
%W |
Week number of the year (Monday as the first day of the week) as a decimal number. All days in a new year preceding the first Monday are considered to be in week 0. |
00, 01, …, 53 |
%c |
Locale’s appropriate date and time representation. |
Tue Aug 16 21:30:00 1988 (en_US); Di 16 Aug 21:30:00 1988 (de_DE) |
%x |
Locale’s appropriate date representation. |
08/16/88 (None); 08/16/1988 (en_US); 16.08.1988 (de_DE) |
%X |
Locale’s appropriate time representation. |
21:30:00 (en_US); 21:30:00 (de_DE) |
%% |
A literal '%' character. |
% |
笔记-python-standard library-8.1 data types-datetime的更多相关文章
- Python Standard Library
Python Standard Library "We'd like to pretend that 'Fredrik' is a role, but even hundreds of vo ...
- The Python Standard Library
The Python Standard Library¶ While The Python Language Reference describes the exact syntax and sema ...
- Python语言中对于json数据的编解码——Usage of json a Python standard library
一.概述 1.1 关于JSON数据格式 JSON (JavaScript Object Notation), specified by RFC 7159 (which obsoletes RFC 46 ...
- 《The Python Standard Library》——http模块阅读笔记1
官方文档:https://docs.python.org/3.5/library/http.html 偷个懒,截图如下: 即,http客户端编程一般用urllib.request库(主要用于“在这复杂 ...
- 《The Python Standard Library》——http模块阅读笔记2
http.server是用来构建HTTP服务器(web服务器)的模块,定义了许多相关的类. 创建及运行服务器的代码一般为: def run(server_class=HTTPServer, handl ...
- 《The Python Standard Library》——http模块阅读笔记3
http.cookies — HTTP state management http.cookies模块定义了一系列类来抽象cookies这个概念,一个HTTP状态管理机制.该模块支持string-on ...
- Python Standard Library 学习(一) -- Built-in Functions 内建函数
内建函数列表 Built-in Functions abs() divmod() input() open() staticmethod() all() enumerate() int() ord() ...
- 【12c】扩展数据类型(Extended Data Types)-- MAX_STRING_SIZE
[12c]扩展数据类型(Extended Data Types)-- MAX_STRING_SIZE 在12c中,与早期版本相比,诸如VARCHAR2, NAVARCHAR2以及 RAW这些数据类型的 ...
- Data Types in the Kernel <LDD3 学习笔记>
Data Types in the Kernel Use of Standard C Types /* * datasize.c -- print the size of common data it ...
- C++11新特性——The C++ standard library, 2nd Edition 笔记(一)
前言 这是我阅读<The C++ standard library, 2nd Edition>所做读书笔记的第一篇.这个系列基本上会以一章一篇的节奏来写,少数以C++03为主的章节会和其它 ...
随机推荐
- 图片单独上传 (word)
Word.ApplicationClass wordApp=new ApplicationClass(); object file=path; object nullobj=System.Reflec ...
- Js/Jquery获取input file的文件名
html代码: <input type="file" name="file" id="file" class="in ...
- Struts2笔记3--OGNL
一.OGNL入门 1.简介 OGNL的全称是对象图导航语言(Object-Graph Navigation Language),它是一种功能强大的开源表达式语言,使用这种表达式语言,可以通过某 ...
- javascript数组属性及方法
数组元素的添加 1. arrayt.splice(index,howmany,item1,.....,itemX) 向/从数组中添加/删除项目,然后返回被删除的项目 2. array.unshift( ...
- 【extjs6学习笔记】0.3 准备: 类库结构2
- lintcode中等难度5道题
1.整数转罗马数字 对任一个罗马数字可以 由12个罗马字符进行加法操作完成,且大数在左,小数在右,可以将一个数字进行拆分来求解 2.买卖股票的最佳时机 II 可将问题转换为只要相连的两天prices[ ...
- 再次尝试windows下msys+MinGW编译ffmpeg
电脑上安装太多的开源库,环境变量里面一些常用的头文件都有几种,以前使用的编译ffmpeg的方法现在常常提示错误.从config.log中看,这些错误往往都是一些头文件引用错误导致.由于项目中继续编译自 ...
- java Vamei快速教程03 构造器和方法重载
作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! 在方法与数据成员中,我们提到,Java中的对象在创建的时候会初始化(initial ...
- linux 命令——43 killall(转)
Linux 系统中的killall命令用于杀死指定名字的进程(kill processes by name).我们可以使用kill命令杀死指定进程PID的进 程,如果要找到我们需要杀死的进程,我们还需 ...
- linux 命令——27 chmod
chmod命令用于改变linux系统文件或目录的访问权限.用它控制文件或目录的访问权限.该命令有两种用法. 一种是包含字母和操作符表达式的文字设定法: 另一种是包含数字的数字设定法. Linux系统中 ...