1. 程式人生 > >python date、time、datetime

python date、time、datetime

文章目錄


常用datetime解析日期

from datetime import date

def strptime(x):
    dt= datetime.strptime(x, '%d.%m.%Y')
    return dt
#sales為一個DataFrame表格,date為一個日期,但是是string型別的
#將date的型別轉換為datetime型別的日期 sales.date= sales.date.apply(strptime)


  • class datetime.date:
    公曆日期
    屬性:year,month和day
  • class datetime.time:
    每天精確到時分秒
    屬性:hour、minute、second、microsecond和tzinfo
  • class datetime.datetime:
    日期+時間
    屬性:year、month、day、hour、minute、second、microsecond和tzinfo
  • clas datetime.timedelta:
    表示兩個date、time或datetime例項之間相差的時間,解析度達到微秒

date物件

類屬性:
date.min
date.max
例項屬性:
date.year
date.month
date.day

例項方法:
date.replace(year, month, day): 依據關鍵字引數給出的新值,返回一個新的日期
date.isoformat():返回以ISO 8601 格式‘YYYY-MM-DD’表示日期的字串。
date.ctime():返回表示日期的字串
date.strftime():返回一個表示日期的字串,由顯式的格式字串控制。
支援的操作:
timedelta = date1 - date2

from datetime import
date
str="01.10.2018"
d= date.today()
d
datetime.date(2018, 12, 24)
type(d)
datetime.date
date.ctime(d)
'Mon Dec 24 00:00:00 2018'
date.isoformat(d)
'2018-12-24'

time物件

類屬性:
time.min
time.max
例項屬性:
time.hour
time.minute
time.second

例項方法:
time.replace([hour[, minute[, second[, microsecond[, tzinfo]]]]]):返回具有相同值的time
time.isoformat():返回以ISO 8601 格式HH:MM:SS.mmmmmm表示間的字串
time.strftime(format):返回一個表示time的字串,由顯式的格式字串控制。

datetime物件

類屬性:
datetime.min
datetime.max
例項屬性:
datetime.year
datetime.month

datetime.hour
datetime.minute

例項方法:
datetime.replace() 返回具有相同屬性的 datetime
datetime.date():返回具有相同年、月和日的date物件
datetime.time():返回具有相同小時、分鐘、秒和微秒的time物件
datetime.timestamp():返回對應於datetime例項的POSIX時間戳
datetime.weekday():返回一星期中的第幾天,其中星期一是0,星期日是6
datetime.isoweekday():返回一星期中的第幾天,其中星期一是1,星期日是7
date.isocalendar():返回一年中的第幾周
datetime.isoformat(sep=’T’) 返回以ISO 8601 格式YYYY-MM-DDTHH:MM:SS.mmmmmm表示日期和時間的字串
datetime.ctime():返回一個表示日期和時間的字串
datetime.strftime(format):返回一個表示日期和時間的字串,由顯式的格式字串控制

格式化時間

date、datetime和time物件都支援 strftime(format) 方法,strptime()方法

  • Python格式化日期時間的函式為:datetime.datetime.strftime()。在顯式格式字串的控制下建立一個表示時間的字串
  • 由字串轉為日期型的函式為:datetime.datetime.strptime()

strftime(): datetime轉換成指定格式的日期時間字串

#格式:
datetime物件.strftime('format' ) #format:如,'%Y-%m-%d %H:%M:%S'

%d 返回的是當前時間是當前月的第幾天
%m 返回月份 範圍[0,12]
%Y 四個數字表示的年份 2015
%y 兩個數字表示的年份(不帶世紀) 15

%H 以24小時製表示當前小時
%M 返回分鐘數 範圍 [0,59]
%S 返回秒數 範圍 [0,61]
%f 微秒的表示: 範圍: [0,999999]

%I 以12小時製表示當前小時
%p 返回是上午還是下午–AM or PM

%j 返回 當天是當年的第幾天 範圍[001,366]
%W 返回當週是當年的第幾周 以週一為第一天

from datetime import datetime
dt= datetime.now()
print(dt)
print(dt.year, dt.month, dt.day)
2018-12-24 11:49:39.256000
(2018, 12, 24)
dt.strftime('%Y-%m-%d %H:%M:%S') #24小時制時間
'2018-12-24 11:49:39'
dt.strftime('%Y-%m-%d %I:%M:%S %p') #12小時制時間
'2018-12-24 11:49:39 AM'
print('星期縮寫:', dt.strftime('%a'))
('\xe6\x98\x9f\xe6\x9c\x9f\xe7\xbc\xa9\xe5\x86\x99\xef\xbc\x9a', 'Mon')
print('星期全拼%%A: %s '  % dt.strftime( '%A' ))
星期全拼%A: Monday 
print('今天是今年的第%s天 '  % dt.strftime( '%j' ))
print('今周是今年的第%s周 '  % dt.strftime( '%W' ))
今天是今年的第358天 
今周是今年的第52周 

strptime(): 字串轉換成指定格式的datetime

#格式
datetime.strptime(string, 'format')#NOTE: this format must match str format
from datetime import datetime
str='2018.10.01'
datetime.strptime(str, '%Y.%m.%d')#'2018.10.01' must match format '%Y.%m.%d'  寫成'%Y/%m/%d'將是不匹配的,出錯
datetime.datetime(2018, 10, 1, 0, 0)
str1='01.10.2018'
datetime.strptime(str1, '%d.%m.%Y')
datetime.datetime(2018, 10, 1, 0, 0)
str2='2018/12/25'
dt2= datetime.strptime(str2, '%Y/%m/%d') #'2018/12/25' must match format '%Y/%m/%d'
dt2
datetime.datetime(2018, 12, 25, 0, 0)