python入门-datetime 日期时间

324 阅读2分钟

date 日期对象

date() 创建日期对象

d = datetime.date(2021, 5, 28)
d.year # 2021
d.month # 5
d.day # 28
d.min # 0001-01-01 最小日期
d.max # 9999-12-31 最大日期
d.resolution # 1 day 间隔

today() 当前日期对象

now = datatime.date.today()

weekday() / isoweekday() 星期

d = date.fromisoformat('2021-05-28')


print(
  d.weekday(), # 取值范围 0-6
  d.isoweekday() # 取值范围 1-7
)


# 4 5

formtimstamp() 返回时间戳的本地时间格式

import time
import datetime
datetime.date.formtimestamp(time.time())
# 2021-05-28

fromisoformat() 字符转date对象, 格式 YYYY-MM-DD

d = date.fromisoformat('2021-05-28')
print(d) # 2021-05-28
print(type(d)) #  <class 'datetime.date'>

isoformat() date对象转字符

d = date.fromisoformat('2021-05-28')
d_str = d.isoformat()
type(d_str)
# <class 'str'>

日期运算

from datetime import date, timedelta


from datetime import date, timedelta


d = date.fromisoformat('2020-05-28')
one_day = timedelta(days=1) 
before_day = d - one_day
after_day = d + one_day


# 前一天
print(
  before_day, 
  type(before_day),  
)
# 2020-05-28 <class 'datetime.date'>


# 后一天
print(
  after_day, 
  type(after_day),  
)
# 2020-05-28 <class 'datetime.date'>
 
# 日期间隔
print(
  before_day - after_day,
  after_day - before_day
)
# -2 days, 0:00:00
# 2 days, 0:00:00


# 日期先后
print(
  after_day > before_day,
  after_day == before_day,
  after_day < before_day,
)
# True False False

time 时间

time() 创建时间对象

t = time(
  hour=10,
  minute=20,
  second=24,
  microsecond=1000
)


print(t)
# 10:20:24.001000

fromiosformat() 字符转time对象

t = time.fromisoformat('10:20:24.001000')


print(t, type(t))
# 10:20:24.001000 <class 'datetime.time'>

iosformat() 返回指定格式时间字符

t = time(
  hour=10,
  minute=20,
  second=24,
  microsecond=1000
)


print(
  t.isoformat(timespec='hours')
)
# 10
# 10:20

datetime 日期时间

datetime() 创建对象

d = datetime(
  year=2021,
  month=5,
  day=28,
  hour=14,
  minute=31,
  second=10,
  microsecond=1000
)
# 2021-05-28 14:31:10.001000

today() / now() 当前时间对象

print(
  datetime.today(),
  datetime.now()
)


# 2021-05-28 14:34:30.703624
# 2021-05-28 14:34:30.703624

fromtimestamp() 时间戳转datetime对象

d = datetime.fromtimestamp(time.time())


print(
  d,
  type(d)
)
# 2021-05-28 14:39:09.975633
# <class 'datetime.datetime'>

timestamp() datetime对象转时间戳

d = datetime.fromtimestamp(time.time())


timestamp = d.timestamp()


print(
  timestamp,
  type(timestamp)
)
# 1622184158.392243
# <class 'float'>

strptime() 字符转datetime对象

d = datetime.strptime(
  '2021-05-28 14:31:10', # 时间字符
  '%Y-%m-%d %H:%M:%S' # 对应的时间格式
)


print(type(d))
# <class 'datetime.datetime'>

strftime() datetime格式化输出

d = datetime.strptime(
  '2021-05-28 14:31:10',
  '%Y-%m-%d %H:%M:%S'
)


print(
  d.strftime('%Y/%m/%d %H.%M.%S')
)
# 2021/05/28 14.31.10

timedelta 时间差

t = timedelta(
  days=1,
  seconds=10,
  microseconds=100,
  milliseconds=1000,
  minutes=1,
  weeks=1
)


print(t)
# 8 days, 0:01:11.000100