1. 程式人生 > 其它 >Python處理日期方法大全

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