Python处理日期方法大全

前言

  1. 使用 time 模块展示当前日期和时间

  2. 将天、小时、分钟转换为秒

  3. 使用 Pandas 获取当前日期和时间

  4. 将字符串转换为日期时间对象

  5. 以毫秒为单位获取当前时间

  6. 以 MST、EST、UTC、GMT 和 HST 获取当前日期时间

  7. 从给定的日期当中获取星期几

  8. 计算两个日期时间对象之间的时差

  9. 将 5 分钟添加到 Unix 时间戳

  10. 在 Python 中遍历一系列日期

  11. 巴黎时间更改为纽约时间

  12. 使用 Python 获得最后7个工作日

  13. 从今天的日期和一个人的生日推算年龄

  14. 获得本月的第一个星期二

  15. 将整数转换为日期对象

  16. 当前日期减去 N 天的天数

  17. 比较两个日期

  18. 从 datetime 对象中提取年份

  19. 在 Python 中找到星期几

  20. 从当前日期获取 7 天前的日期

  21. 将两个日期时间对象之间的差值转换为秒

  22. 获得任何一个月的第三个星期五

  23. 从 Python 中的周数获取日期

  24. 获取特定日期的工作日

  25. 创建一个 15 分钟前的 DateTime

  26. 从特定日期获取周的开始和结束日期

  27. 两个日期之间的差异(以秒为单位)

  28. 以这种格式获取昨天的日期MMDDYY

  29. 从今天的日期获取上周三

  30. 所有可用时区的列表打印

  31. 获取指定开始日期和结束日期之间的日期范围

  32. 毫秒转换为数据

  33. 查找给定日期之后的第一个星期日的日期

  34. 将(Unix)时间戳秒转换为日期和时间字符串

  35. 以月为单位的两个日期之间的差异

  36. 将本地时间字符串转换为 UTC

  37. 获取当月的最后一个星期四

  38. 从特定日期查找一年中的第几周

  39. 从给定日期获取星期几

  40. 用 AM PM 打印当前时间

  41. 获得一个月的最后一天

  42. 从工作日值中获取工作日名称

  43. 将 N 小时数添加到当前日期时间

  44. 从当前日期获取年、月、日、小时、分钟

  45. 获取特定月份和年份的最后一个星期日

  46. 查找特定日期的年份中的哪一天

  47. 查找当前日期是工作日还是周末

  48. 组合 datetime.date 和 datetime.time 对象

  49. 获得每月的第 5 个星期一

  50. 将日期时间对象转换为日期对象

  51. 获取没有微秒的当前日期时间

  52. 将 N 秒数添加到特定日期时间

  53. 从当前日期获取两位数的月份和日期

  54. 从特定日期获取月份数据的开始和结束日期

  55. 以周为单位的两个日期之间的差异

  56. 将字符串格式的日期转换为 Unix 时间戳

  57. 获取最后一个周日和周六的日期

  58. 检查对象是否属于 datetime.date 类型

  59. 获取特定日期的周数

  60. 获取 UTC 时间

  61. 获取本周的开始和结束日期

  62. 两个日期之间的差异(以分钟为单位)

  63. 将日期时间对象转换为日期字符串

  64. 获得上周五

  65. 将 3 周添加到任何特定日期

  66. 在其他两个日期之间生成一个随机日期

  67. 查找从今天开始的第一个星期一的日期

  68. 两个日期之间的差异(以天为单位)

  69. 向当前日期添加六个月

  70. 将数据时间对象转换为 Unix(时间戳)

  71. 将年、月、日、时、分、秒的 N 个数字添加到当前日期时间

  72. 获取指定开始日期和结束日期之间的日期范围

  73. 减去 N 个年、月、日、时、分、秒到当前日期时间

  74. 获取指定年份和月份的月份第一天的工作日和月份的天数

  75. 打印特定年份的所有星期一

  76. 打印特定年份的日历

  77. 从月份编号中获取月份名称

  78. 从给定日期获取一周的开始和结束日期

  79. 根据当前日期查找上一个和下一个星期一的日期

  80. 获取当前季度的第一个日期和最后一个日期

 

一、使用 time 模块展示当前日期和时间

import time
from time import gmtime, strftime
 
t = time.localtime()  
print (time.asctime(t))  # Sun May 7 09:30:37 2017
print(strftime("%a, %d %b %Y %H:%M:%S +0000", gmtime()))  # Sun, 07 May 2017 04:00:37 +0000
print(strftime("%A", gmtime()))  # Sunday
print(strftime("%D", gmtime()))  # 05/07/17
print(strftime("%B", gmtime()))  # May
print(strftime("%y", gmtime()))  # 17
 
# Convert seconds into GMT date
print(strftime("%a, %d %b %Y %H:%M:%S +0000", gmtime(1234567890)))  # Fri, 13 Feb 2009 23:31:30 +0000

 

二、将天、小时、分钟转换为秒

SECONDS_PER_MINUTE = 60
SECONDS_PER_HOUR = 3600
SECONDS_PER_DAY = 86400
 
# 输入天、小时、分钟、秒的数量
days = int(input("Enter number of Days: "))
hours = int(input("Enter number of Hours: "))
minutes = int(input("Enter number of Minutes: "))
seconds = int(input("Enter number of Seconds: "))
 
# 计算
total_seconds = days * SECONDS_PER_DAY
total_seconds = total_seconds + ( hours * SECONDS_PER_HOUR)
total_seconds = total_seconds + ( minutes * SECONDS_PER_MINUTE)
total_seconds = total_seconds + seconds
 
# 结果
print("Total number of seconds: ","%d"%(total_seconds))
'''
Enter number of Days: 5
Enter number of Hours: 36
Enter number of Minutes: 24
Enter number of Seconds: 15
Total number of seconds: 563055
'''

 

三、使用 Pandas 获取当前日期和时间

import pandas as pd
print(pd.datetime.now())  # 2018-01-19 16:08:28.393553
print(pd.datetime.now().date())  # 2018-01-19
print(pd.datetime.now().year)  # 2018
print(pd.datetime.now().month)  # 1
print(pd.datetime.now().day)  # 19
print(pd.datetime.now().hour)  # 16
print(pd.datetime.now().minute)  # 8
print(pd.datetime.now().second)  # 28
print(pd.datetime.now().microsecond)  # 394553

 

四、将字符串转换为日期时间对象

from datetime import datetime
from dateutil import parser

d1 = "Jan 7 2015  1:15PM"
d2 = "2015 Jan 7  1:33PM"

# If you know date format
date1 = datetime.strptime(d1, '%b %d %Y %I:%M%p')
print(type(date1))  # class 'datetime.datetime'
print(date1)  # 2015-01-07 13:15:00

# If you don't know date format
date2 = parser.parse(d2)
print(type(date2))  # class 'datetime.datetime'
print(date2)  # 2015-01-07 13:33:00

 

五、以毫秒为单位获取当前时间

import time
 
milliseconds = int(round(time.time() * 1000))
print(milliseconds)  # 1516364270650

 

六、以 MST、EST、UTC、GMT 和 HST 获取当前日期时间

from datetime import datetime
from pytz import timezone
 
mst = timezone('MST')
print("Time in MST:", datetime.now(mst))  # Time in MST: 2017-01-19 06:06:14.495605-07:00
est = timezone('EST')
print("Time in EST:", datetime.now(est))  # Time in EST: 2017-01-19 08:06:14.496606-05:00
utc = timezone('UTC')
print("Time in UTC:", datetime.now(utc))  # Time in UTC: 2017-01-19 13:06:14.496606+00:00
gmt = timezone('GMT')
print("Time in GMT:", datetime.now(gmt))  # Time in GMT: 2017-01-19 13:06:14.496606+00:00
hst = timezone('HST')
print("Time in HST:", datetime.now(hst))  # Time in HST: 2017-01-19 03:06:14.497606-10:00

 

七、从给定的日期当中获取星期几

import datetime
 
dayofweek = datetime.date(2010, 6, 16).strftime("%A")
print(dayofweek)  # Wednesday

# weekday()方法: 0代表周一,6代表周日
print("weekday():", datetime.date(2010, 6, 16).weekday())  # weekday(): 2
 
# isoweekday() 方法: 1代表周一,7代表周日
print("isoweekday()", datetime.date(2010, 6, 16).isoweekday())  # isoweekday() 3
 
dayofweek = datetime.datetime.today().strftime("%A")
print(dayofweek)  # Friday
print("weekday():", datetime.datetime.today().weekday())  # weekday(): 4
print("isoweekday()", datetime.datetime.today().isoweekday())  # isoweekday(): 5

 

八、计算两个日期时间对象之间的时差

import datetime
from datetime import timedelta
 
datetimeFormat = '%Y-%m-%d %H:%M:%S.%f'
date1 = '2016-04-16 10:01:28.585'
date2 = '2016-03-10 09:56:28.067'
diff = datetime.datetime.strptime(date1, datetimeFormat)\
    - datetime.datetime.strptime(date2, datetimeFormat)
 
print("Difference:", diff)  # Difference: 37 days, 0:05:00.518000
print("Days:", diff.days)  # Days: 37
print("Microseconds:", diff.microseconds)  # Microseconds: 518000
print("Seconds:", diff.seconds)  # Seconds: 300

 

九、将 5 分钟添加到 Unix 时间戳

import datetime
import calendar
 
future = datetime.datetime.utcnow() + datetime.timedelta(minutes=5)
print(calendar.timegm(future.timetuple()))  # 1621069619

 

十、遍历一系列日期

import datetime

start = datetime.datetime.strptime("21-06-2020", "%d-%m-%Y")
end = datetime.datetime.strptime("05-07-2020", "%d-%m-%Y")
date_generated = [start + datetime.timedelta(days=x) for x in range(0, (end - start).days)]

for date in date_generated:
    print(date.strftime("%d-%m-%Y"))

 

十一、巴黎时间更改为纽约时间

import pendulum
 
in_paris = pendulum.datetime(2016, 8, 7, 22, 24, 30, tz='Europe/Paris')
print(in_paris)  # 2016-08-07T22:24:30+02:00
 
in_us = in_paris.in_timezone('America/New_York')
print(in_us)  # 2016-08-07T16:24:30-04:00

 

十二、使用 Python 获得最后7个工作日

from datetime import date
from datetime import timedelta
 
today = date.today()
 
for i in range(7):
    d = today - timedelta(days=i)
    if d.weekday() < 5:
        print(d)

 

十三、从今天的日期和一个人的生日推算年龄

from datetime import date
 
 
def calculate_age(born):
    today = date.today()
    try:
        birthday = born.replace(year=today.year)
    except ValueError:
        birthday = born.replace(year=today.year, month=born.month + 1, day=1)
    if birthday > today:
        return today.year - born.year - 1
    else:
        return today.year - born.year
 
 
print(calculate_age(date(2001, 3, 1)))

 

十四、获得本月的第一个星期二

import calendar
from datetime import datetime
 
c = calendar.Calendar(firstweekday=calendar.SUNDAY)
monthcal = c.monthdatescalendar(datetime.today().year, datetime.today().month)
 
try:
    tues = [day for week in monthcal for day in week if
            day.weekday() == calendar.TUESDAY and day.month == datetime.today().month][0]
    print(tues)
except IndexError:
    print('No date found')

 

十五、将整数转换为日期对象

from datetime import datetime

i = 1545730073
timestamp = datetime.fromtimestamp(i)

print(timestamp)  # 2018-12-25 14:57:53
print(type(timestamp))

 

十六、当前日期减去 N 天的天数

from datetime import datetime, timedelta

d = datetime.today() - timedelta(days=5)
print(d)

 

十七、比较两个日期

import datetime

a = datetime.datetime(2020, 12, 31, 23, 59, 59)
b = datetime.datetime(2020, 11, 30, 23, 59, 59)

print(a < b)
print(a > b)

 

十八、从 datetime 对象中提取年份

import datetime
 
year = datetime.date.today().year
print(year)

 

十九、根据日期找到星期几

import pendulum
 
dt = pendulum.parse('2021-05-18')
print(dt.day_of_week)  # 2
 
dt = pendulum.parse('2021-05-01')
print(dt.day_of_week) # 6
 
dt = pendulum.parse('2021-05-21')
print(dt.day_of_week) # 5

 

二十、从当前日期获取 7 天前的日期

from datetime import datetime, timedelta
 
now = datetime.now()
 
for x in range(7):
    d = now - timedelta(days=x)
    print(d.strftime("%Y-%m-%d"))

 

二十一、将两个日期时间对象之间的差值转换为秒

import datetime
 
time1 = datetime.datetime.strptime('19 01 2021', '%d %m %Y')
time2 = datetime.datetime.strptime('25 01 2021', '%d %m %Y')
 
difference = time2 - time1
print(difference)  # 6 days, 0:00:00
 
seconds = difference.total_seconds()
print(seconds)  # 518400.0

 

二十二、获得任何一个月的第N个星期五

import calendar

# 取2021年5月的第三个星期五
c = calendar.Calendar(firstweekday=calendar.SUNDAY)
year = 2021
month = 5
n = 2  # 取第三个
monthcal = c.monthdatescalendar(year, month)
 
try:
    third_friday = [
        day for week in monthcal 
            for day in week if
                day.weekday() == calendar.FRIDAY and day.month == month
    ][n]
    print(third_friday)  # 2021-05-21
except IndexError:
    print('No date found')

 

 

二十三、根据周数获取日期

import datetime
from dateutil.relativedelta import relativedelta
 
week = 25
year = 2021
date = datetime.date(year, 1, 1) + relativedelta(weeks=+week)
print(date)  # 2021-06-25

 

二十四、获取特定日期的工作日

import datetime
 
print(datetime.date(2020, 5, 15).isocalendar()[2])  # 5

 

二十五、创建一个 15 分钟前的 DateTime

import datetime
 
dt = datetime.datetime.now() - datetime.timedelta(minutes=15)
print(dt)  # 2021-05-15 22:25:55.897365

 

二十六、从特定日期获取周的开始和结束日期

import pendulum
 
dt = pendulum.datetime(2012, 9, 5)
 
start = dt.start_of('week')
print(start.to_datetime_string())  # 2012-09-03 00:00:00
 
end = dt.end_of('week')
print(end.to_datetime_string())  # 2012-09-09 23:59:59

 

二十七、两个日期之间的差异(以秒为单位)

from datetime import datetime
 
fmt = '%Y-%m-%d %H:%M:%S'
d1 = datetime.strptime('2020-01-01 17:31:22', fmt)
d2 = datetime.strptime('2020-01-03 17:31:22', fmt)
 
days_diff = d2 - d1
print(days_diff.days * 24 * 60 * 60)  # 172800

 

二十八、以这种格式获取昨天的日期MMDDYY

from datetime import date, timedelta
 
yesterday = date.today() - timedelta(days=1)
print(yesterday.strftime('%m%d%y'))  # 051421

 

二十九、根据今天的日期获取上周三的日期

from datetime import date
from datetime import timedelta

today = date.today()

offset = (today.weekday() - 2) % 7
wednesday = today - timedelta(days=offset)
print(wednesday)  # 2021-05-12

 

三十、所有可用时区的列表打印

import pytz

for i in pytz.all_timezones:
    print(i)

 

 

待续。。。

 

 

 

 

 

 

 

参考:https://mp.weixin.qq.com/s/YQ7P0py29-BjnSXNoBCUBA

 

posted @ 2022-03-15 10:36  ''竹先森゜  阅读(2208)  评论(0编辑  收藏  举报