关于python时间time、datetime、date之间转换,获取今天、昨天、上周、上月、去年的时间

一、time、datetime、date之间转换

概念: 首先需要理解三个名词: 时间戳(int), 时间数组, 日期格式(str)

utc time : 国际时间(伦敦时间)

localtime: 本地时间时间(如北京时间 = 伦敦时间 + 8小时)

国际时间获取: time.gmtime()     datetime.datetime.utcnow()

本地时间获取: time.localtime()    datetime.datetime.now()

 

import time

# 时间戳(本地)
     s = time.time()
     print('时间戳:', s)
>> 1540975769.3088

# 时间数组
     time_array = time.localtime()              # localtime
     time_array2 = time.gmtime()              # utc time
     print('本地时间数组:', time_array)
     print('utc时间数组:', time_array2)


>> 本地时间数组: time.struct_time(tm_year=2018, tm_mon=10, tm_mday=31, tm_hour=16, tm_min=50, tm_sec=53, tm_wday=2, tm_yday=304, tm_isdst=0)
>> utc时间数组: time.struct_time(tm_year=2018, tm_mon=10, tm_mday=31, tm_hour=8, tm_min=50, tm_sec=53, tm_wday=2, tm_yday=304, tm_isdst=0)

# 日期格式(str)
     dt = time.strftime('%Y-%m-%d %H:%M:%S', time_array)
     print('日期格式(str):', dt)
>> 日期格式(str): 2018-10-31 16:50:53

1、时间戳转日期(秒 -> 数组 -> 日期):  time.strftime()  类似 datetime.datetime.strftime()
        s = 1540878671
        array = time.gmtime(s)
        dt = time.strftime('%Y-%m-%d %H:%M:%S', array)
        print("时间戳转化的日期:", dt)
     >> 时间戳转化的日期:2018-10-30 08:51:11

2、日期转时间戳(日期 -> 数组 -> 秒):  time.strptime()  类似 datetime.datetime.strptime()
       dt = '2018-10-30 08:51:11'
       array = time.strptime(dt, '%Y-%m-%d %H:%M:%S')
       s = time.mktime(array)
       print("日期转化的时间戳:", s)
     >>日期转化的时间戳:1540860671.0

     
二、获取今天、昨天、上周、上月、去年的此刻时间

首先安装: pip  install python-dateutil

相差天数函数: datetime.timedelta(days=1)  

相差月份函数:relativedelta(months=1)

from dateutil.relativedelta import relativedelta
import datetime

today = datetime.date.today()                                 # 今天
yesterday = today - datetime.timedelta(days=1)                # 昨天
Lastweek = today - datetime.timedelta(days=7)                 # 上周
Nearly_month = today - datetime.timedelta(days=30)             # 前30天
Last_month = datetime.date.today() - relativedelta(months=1)   # 上月
Last_year = datetime.date.today() - relativedelta(months=12)   # 去年

上述获取到的结果为,

 转化为日期格式(str):  datetime.date.strftime(Last_year, '%Y-%m-%d')

 

Deamo:

   输入年月日,得知其为当年的第几天?

 今天日期减去年12月31日的日期即可

import datetime
  
y = int(input('请输入4位数字的年份:'))          #  获取年份
m = int(input('请输入月份:'))                 # 获取月份
d = int(input('请输入是哪一天:'))             # 获取“日”
  
targetDay = datetime.date(y, m, d)                                 # 将输入的日期格式化成标准的日期
dayCount = targetDay - datetime.date(targetDay.year - 1, 12, 31)   # 减去上一年最后一天
print('%s是%s年的第%s天。'% (targetDay, y, dayCount.days))

 

 

 

你可能感兴趣的:(python,time,随笔,python)