时间序列


一、基本的now用法


In:
import datetime
m=datetime.datetime.now()  # 获取当前日期时间
year=datetime.datetime.now().year  # 获取当前年份
month=datetime.datetime.now().month  # 获取当前月份
day=datetime.datetime.now().day      # 获取当前天数
m,year,month,day
Out:
(datetime.datetime(2020, 1, 20, 10, 20, 17, 371776), 2020, 1, 20) # 类型为datetime


二、 date模块的用法

In:
from datetime import date
new_date = date(2018, 1, 1) # 显示特定的日期
new_date
Out:
datetime.date(2018, 1, 1)

In: new_date.today() # 显示今天日期 Out: datetime.date(2018, 11, 5)

In: new_date.ctime() # 返回字符串,与datetime.time.ctime()格式相同 Out: 'Mon Jan 1 00:00:00 2018'

In: new_date.replace(1999,12) # 替换年月日并返回新的日期 Out: datetime.date(1999, 12, 1)

In: new_date.timetuple() #将date转换为time模块中的time.struct_time对象 Out: time.struct_time(tm_year=2018, tm_mon=1, tm_mday=1, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=0, tm_yday=1, tm_isdst=-1)

In: new_date.weekday() #返回一周内的星期 0-6 Out: 0 # 从0开始,0代表星期一,而6就代表星期天

In: random.uniform(date(2018,1,1),date(2018,12,31)) #随机返回日期,uniform是随机生成区间范围内的实数 Out: datetime.date(2018, 6, 25)


三、time模块用法

In:
from time import *
new_time=mktime((2018,5,20,10,30,0,-1,-1,-1)) #时间元组->秒,即转为时间戳
new_time
Out:
1541385000.0

In: localtime(new_time) #秒->时间元组,与timetuple()不同,timetuple()是将date转为时间元祖 Out: time.struct_time(tm_year=2018, tm_mon=5, tm_mday=20, tm_hour=10, tm_min=30, tm_sec=0, tm_wday=0, tm_yday=309, tm_isdst=0)

In: asctime(localtime(new_time)) #时间元组->字符串 Out: 'Sun May 20 10:30:00 2018'

In: strptime('Sun May 20 10:30:00 2018') #字符串->时间元组 Out: time.struct_time(tm_year=2018, tm_mon=5, tm_mday=20, tm_hour=10, tm_min=30, tm_sec=0, tm_wday=6, tm_yday=140, tm_isdst=-1)

In: detestr = new_date.strftime('%Y-%m-%d') # 将date类型转为 字符串 datestr Out: '2018-01-01'

In: time() #当前秒数 Out: 1577423336.532038

In: asctime(localtime(time())) #当前时间字符串 Out: 'Mon Jan 20 10:48:19 2020'

In: NOW=localtime(time()) #格式化显示当前时间 "{}-{}-{}-{}-{}-{}".format(NOW.tm_year,NOW.tm_mon,NOW.tm_mday,NOW.tm_hour,NOW.tm_min,NOW.tm_sec) Out: '2020-1-20-10-50-5'


1.将datetime类型转成str

In:
from datetime import datetime
str_date = datetime.now().strftime("%Y-%m-%d")  # 将当前日期转为字符串
str_date
Out:
'2020-01-20'

2.将str类型转成datetime

In:
form datetime import datetime
start_date = datetime.strptime("2019-04-15", "%Y-%m-%d")  # 将固定字符串转为固定格式的日期类型
Out:
datetime.datetime(2019, 4, 15, 0, 0)
from datetime import date
date # 类是一个日期类,由年、月、日组成。由于Python也是面向对象编程语言,所以针对类,就会有构造函数,该类的构造函数如下: 

class datetime.date(year, month, day):
year : # 表示年,范围[MINYEAR, MAXYEAR],即[1, 9999]
month : # 表示月,范围[1, 12]
day : # 一月中第几天,最大值根据给定的year,month参数来决定。例如闰年2月份有29天


四、date模块的十大用法

一、date对象所能表示的最大最小日期,返回的是datetime.date类型的对象

>>> import datetime
>>> datetime.date.max  # 获取最大日期,调用__repr__内置方法
datetime.date(9999, 12, 31)
>>> print datetime.date.min  # 获取最小日期
0001-01-01
>>>


二、date.today() 函数:返回一个当前本地日期的date类型的对象

>>>import datetime
>>> datetime.date.today() # 返回本地日期对象,调用__repr__内置方法
datetime.date(2018, 1, 16)
>>> print datetime.date.today() #
2018-01-16
>>>


三、date.fromtimestamp()函数:根据给定的时间戳,返回一个date对象

>>> import datetime
>>> import time
>>> now=time.time()  # 返回时间戳
>>> print now
1516110787.69
>>> s=datetime.date.fromtimestamp(now) # 根据给定的时间戳,返回date对象
>>> s
datetime.date(2018, 1, 16) # 返回固定参数的date对象
>>> print s
2018-01-16
>>>


四、date.weekday()函数:参数必须是一个date类型的对象,返回该日期是一周中的第几天。返回值是一个整型。星期一,返回0;星期二,返回1。。。

>>> s=datetime.date.today()
>>> print s
2018-01-16
>>> s
datetime.date(2018, 1, 16)
>>> type(s) # 查看date返回的类型
<type 'datetime.date'>
>>> d=datetime.date.weekday(s) # 返回对应类型的
>>> d
0
>>> print d
0
>>> type(d)
<type 'int'>
>>>


五、date.isoweekday()函数:该函数需要一个datetime.date类型的参数。返回weekday中的星期几,星期一,返回1;星期二,返回2;以此类推。

>>> s=datetime.date.today()
>>> print s
2018-05-20
>>> s
datetime.date(2018, 5, 20)
>>> d=datetime.date.isoweekday(s)
>>> d
1
>>> type(d)
<type 'int'>
>>>


六、date.isocalendar()函数:该函数需要一个datetime.date类型的参数。返回date类型对象中的year(年),week(周),weekday(一周中的第几天) ,返回的是一个元祖类型

>>> s=datetime.date.today()
>>> print s
2018-5-20
>>> s
datetime.date(2018, 5, 20)
>>> d=datetime.date.isocalendar(s)
>>> d
(2018, 20, 7)
>>> print d
(2018, 20, 7)  # 代表2018年中的第20周,第三周中的第7天,即5月20日
>>> type(d)
<type 'tuple'>
>>>

>>> s=datetime.date(2018,1,14)
>>> s
datetime.date(2018, 1, 14)
>>> print s
2018-01-14
>>> d
(2018, 3, 2)
>>> d=datetime.date.isocalendar(s)
>>> d
(2018, 2, 7)     # 代表2018年中的第3周,第三周中的第7天
>>>


七、date.strftime(fmt) 返回自定义格式的时间字符串。fmt是自定义的时间格式

>>> a=datetime.date.today()
>>> a
datetime.date(2018, 1, 16)
>>> b=a.strftime("%Y-%m-%d %H:%M:%S")
>>> b
'2018-01-16 00:00:00'
>>> print b
2018-01-16 00:00:00
>>> type(b)
<type 'str'>


八、.replace(year, month, day):生成一个新的日期对象 用参数指定的年,月,日代替原有对象中的属性。(原有对象仍保持不变)

>>> date1
datetime.date(2018, 1, 16)
>>> date_new=date1.replace(year=2017)  # 将year替换为2017
>>> date_new
datetime.date(2017, 1, 16)
>>> date_new=date1.replace(day=30)
>>> date_new
datetime.date(2018, 1, 30)


九、日期的其他操作–日期加上一个时间间隔(datetime.timedela类的对象)

>>> now=datetime.date.today()
>>> now
datetime.date(2018, 1, 16)
>>> print now
2018-01-16
>>> b=datetime.timedelta(days=10) # 表示正向推移10天,如果day=-10,表示反向推移10天
>>> b
datetime.timedelta(10)
>>> type(b)
<type 'datetime.timedelta'>
>>> print b
10 days, 0:00:00
>>> print now+b   # 表示推迟10天之后的日期
2018-01-26
>>> print now-b  # 表示提前10天之前的日期
2018-01-06
>>> print now-b-b   # 表示提前20天之前的日期
2017-12-27
>>>


十、日期的其他操作–两个date类型对象相减。返回两个日期的间隔对象,即:datetime.timedelta类型的对象

>>> date1=datetime.date.today()
>>> date2=date1.replace(day=19)
>>> print date1
2018-01-16
>>> print date2
2018-01-19
>>> print type(date1),type(date2)
<type 'datetime.date'> <type 'datetime.date'>   # 两个都是为date类型
>>> print date2-date1
3 days, 0:00:00
>>> print date1-date2
-3 days, 0:00:00
>>> print date2+datetime.timedelta(days=35)
2018-02-23
>>> print type(date2-date1)
<type 'datetime.timedelta'>
>>>

十一、dateutil模块

relativedelta模块弥补了timedelte函数推迟提前月,年级别的日期对象

具体用法:

1
2
3
4
5
6
7
8
9
10
11
import datetime

from dateutil.relativedelta import relativedelta

In [19]: from dateutil.relativedelta import relativedelta

In [20]: k = n-relativedelta(months=3)

In [21]: k
Out[21]: datetime.datetime(2019, 12, 22, 18, 39, 47, 790734)


本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!