from datetime import datetime, date, timedelta
import time
# 第一种方式(更准确):
today = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())
print(today)
# 第二种方式
# print(date.today())
# date.today().strftime("%Y-%m-%d %H:%M:%S")
2021-09-16 10:28:45
yesterday = (date.today() + timedelta(days = -1)).strftime("%Y-%m-%d")
def utc2local(utc_dtm):
# UTC 时间转本地时间( +8:00 )
local_tm = datetime.fromtimestamp(0)
utc_tm = datetime.utcfromtimestamp(0)
offset = local_tm - utc_tm
return utc_dtm + offset
def local2utc(local_dtm):
# 本地时间转 UTC 时间( -8:00 )
return datetime.utcfromtimestamp(local_dtm.timestamp())
utc_tm = datetime.utcnow()
# utc_tm = datetime(2012, 10, 26, 10, 00, 00)
print("src utc time:\t", utc_tm.strftime("%Y-%m-%d %H:%M:%S"))
# UTC 转本地
local_tm = utc2local(utc_tm)
print("tran loc time:\t", local_tm.strftime("%Y-%m-%d %H:%M:%S"))
# 本地转 UTC
utc_tran = local2utc(local_tm)
print("tran utc time:\t", utc_tran.strftime("%Y-%m-%d %H:%M:%S"))
src utc time: 2021-09-16 02:46:42
tran loc time: 2021-09-16 10:46:42
tran utc time: 2021-09-16 02:46:42
date_p = datetime.now().date()
str_p = str(date_p)
print(date_p, type(date_p)) # 2019-01-30
print(str_p, type(str_p)) # 2019-01-30
2021-10-02 <class 'datetime.date'>
2021-10-02 <class 'str'>
str_p = '2019-01-30 15:29:08'
dateTime_p = datetime.strptime(str_p, '%Y-%m-%d %H:%M:%S')
print(dateTime_p, type(dateTime_p)) # 2019-01-30 15:29:08
2019-01-30 15:29:08 <class 'datetime.datetime'>
- %y 两位数的年份表示(00-99)
- %Y 四位数的年份表示(000-9999)
- %m 月份(01-12)
- %d 月内中的一天(0-31)
- %H 24小时制小时数(0-23)
- %I 12小时制小时数(01-12)
- %M 分钟数(00=59)
- %S 秒(00-59)
- %a 本地简化星期名称
- %A 本地完整星期名称
- %b 本地简化的月份名称
- %B 本地完整的月份名称
- %c 本地相应的日期表示和时间表示
- %j 年内的一天(001-366)
- %p 本地A.M.或P.M.的等价符
- %U 一年中的星期数(00-53)星期天为星期的开始
- %w 星期(0-6),星期天为星期的开始
- %W 一年中的星期数(00-53)星期一为星期的开始
- %x 本地相应的日期表示
- %X 本地相应的时间表示
- %Z 当前时区的名称
- %% %号本身
dt = datetime.now()
print('时间:(%Y-%m-%d %H:%M:%S %f): ', dt.strftime('%Y-%m-%d %H:%M:%S %f'))
print('时间:(%Y-%m-%d %H:%M:%S %p): ', dt.strftime('%y-%m-%d %I:%M:%S %p'))
print('星期缩写%%a: %s ' % dt.strftime('%a'))
print('星期全拼%%A: %s ' % dt.strftime('%A'))
print('月份缩写%%b: %s ' % dt.strftime('%b'))
print('月份全批%%B: %s ' % dt.strftime('%B'))
print('日期时间%%c: %s ' % dt.strftime('%c'))
print('今天是这周的第%s天 ' % dt.strftime('%w'))
print('今天是今年的第%s天 ' % dt.strftime('%j'))
print('今周是今年的第%s周 ' % dt.strftime('%U'))
print('今天是当月的第%s天 ' % dt.strftime('%d'))
时间:(%Y-%m-%d %H:%M:%S %f): 2021-11-09 17:31:43 153857
时间:(%Y-%m-%d %H:%M:%S %p): 21-11-09 05:31:43 PM
星期缩写%a: Tue
星期全拼%A: Tuesday
月份缩写%b: Nov
月份全批%B: November
日期时间%c: Tue Nov 9 17:31:43 2021
今天是这周的第2天
今天是今年的第313天
今周是今年的第45周
今天是当月的第09天
在读取pd.to_csv 时,每次都是str 类型,这时候就需要转换为时间格式
df = pd.read_csv(
f'./stock_kline_data/{file_name}.csv', parse_dates=['交易日期'])
df.index = pd.to_datetime(df.index)
def str_to_date(str_p):
return datetime.strptime(str_p, '%Y-%m-%d')
df.index = df.index.map(str_to_date)
参考: https://mp.weixin.qq.com/s?src=11×tamp=1633661554&ver=3361&signature=B5ZLgnPnxngUf1Iu8MJWiWuuqNB29mfpKWuvvK9W5LvuQyZ7r4ouQHG6AqqXkB8BoZwllAT1NwjMFZxSFdqT8iAzHJNDtNDyHNftU9w0AX-6*xi1Y65-on7AA*Q4MGoU&new=1
import pendulum
d1 = pendulum.yesterday() # 昨天
# 2021-10-02T00:00:00+08:00
print('昨天: ',d1)
d2 = pendulum.today() # 今天
# 2021-10-03T00:00:00+08:00
print('今天: ', d2)
d3 = pendulum.tomorrow() # 明天
# 2021-10-04T00:00:00+08:00
print('明天: ', d3)
d4= d2.diff(d1).in_days() # 相差多少天
print('相差多少天: ', d4)
d2.diff(d1).in_hours() # 相差多少小时
# 47
print('现在: ', pendulum.now()) # 现在的时间
昨天: 2021-10-07T00:00:00+08:00
今天: 2021-10-08T00:00:00+08:00
明天: 2021-10-09T00:00:00+08:00
相差多少天: 1
现在: 2021-10-08T10:57:38.376706+08:00
- to_date_string 转化日期
- to_datetime_string 转化日期和时间
- to_time_string 转化时间
- to_formatted_date_string 转化为英文书写形式
- format 安装指定格式转化
- strftime 同 datetime 的格式化方法
dt = pendulum.now()
print('1: ',dt.to_date_string())
# '1975-12-25'
print('2: ',dt.to_formatted_date_string())
# 'Dec 25, 1975'
print('3: ', dt.to_time_string())
# '14:15:16'
print('4: ', dt.to_datetime_string())
# '1975-12-25 14:15:16'
print('5: ', dt.to_day_datetime_string())
# 'Thu, Dec 25, 1975 2:15 PM'
# You can also use the format() method
print('6: ', dt.format('dddd Do [of] MMMM YYYY HH:mm:ss A'))
# 'Friday 8 of October 2021 11:05:51 AM'
# Of course, the strftime method is still available
print('7: ', dt.strftime('%A %-d%t of %B %Y %I:%M:%S %p'))
# 'Thursday 25th of December 1975 02:15:16 PM'
1: 2021-10-08
2: Oct 08, 2021
3: 11:06:17
4: 2021-10-08 11:06:17
5: Fri, Oct 8, 2021 11:06 AM
6: Friday 8th of October 2021 11:06:17 AM
7: Friday 8 of October 2021 11:06:17 AM
- 可以直接转化,也可以在转化时指定时区
- 支持多种时间格式,如果不是标准的时间格式,需要添加参数 strict=False,这样 Pendulum 就会尽最大可能去猜
dt = pendulum.parse('1975-05-21T22:00:00')
print('1: ', dt)
# '1975-05-21T22:00:00+00:00
# You can pass a tz keyword to specify the timezone
dt2 = pendulum.parse('1975-05-21T22:00:00', tz='Europe/Paris')
print('2: ', dt2)
# '1975-05-21T22:00:00+01:00'
# Not ISO 8601 compliant but common
dt3 = pendulum.parse('1975-05-21 22:00:00')
print('3: ', dt3)
dt4 = pendulum.parse('31-01-01', strict=False)
print('4: ', dt4)
dt5 = pendulum.parse('31/01/01', strict=False)
print('5: ', dt5)
dt6 = pendulum.parse('31/1/1', strict=False)
print('6: ', dt6)
1: 1975-05-21T22:00:00+00:00
2: 1975-05-21T22:00:00+01:00
3: 1975-05-21T22:00:00+00:00
4: 2031-01-01T00:00:00+00:00
5: 2031-01-01T00:00:00+00:00
6: 2031-01-01T00:00:00+00:00