از طریق منوی جستجو مطلب مورد نظر خود در وبلاگ را به سرعت پیدا کنید
کم کردن یک روز از تاریخ در پایتون
سرفصلهای مطلب
معرفی
تاریخ یکی از دشوارترین مفاهیم در برنامه نویسی است، عمدتاً به دلیل فرمت های بسیار متفاوتی که یک تاریخ می تواند به عنوان نمایش داده شود و تفاوت های ظریف مختلف تاریخ (سال های کبیسه، مناطق زمانی و غیره). به همین دلیل، دستکاری تاریخ ممکن است دشوار باشد. پس اگر نیاز به کم کردن یک روز از تاریخ داشته باشیم، چه؟
این عملیات در حوزههای مختلف مانند تجزیه و تحلیل دادهها، زمانبندی رویداد یا حتی موارد سادهای مانند محاسبه تاریخ روز قبل بسیار رایج است. در این بایت، روش کم کردن یک روز از تاریخ را با استفاده از ماژول datetime و مهرهای زمانی یونیکس بررسی خواهیم کرد. ما همچنین سایر دستکاریهای تاریخ را بررسی خواهیم کرد، مانند کم کردن بیش از یک روز.
با استفاده از زمان قرار مدول
پایتون زمان قرار ماژول یک ابزار قدرتمند برای مقابله با تاریخ و زمان است. برای کم کردن یک روز از تاریخ، می توانیم از عدد استفاده کنیم زمان دلتا شی از زمان قرار مدول. در اینجا به این صورت است:
from datetime import datetime, timedelta
today = datetime.now()
yesterday = today - timedelta(days=1)
print("Today's date:", today)
print("Yesterday's date:", yesterday)
وقتی این اسکریپت را اجرا می کنید، تاریخ امروز و تاریخ روز قبل را چاپ می کند.
با استفاده از مهر زمانی یونیکس
روش دیگر برای کم کردن یک روز از تاریخ، استفاده از مهر زمانی یونیکس خام است. مهر زمانی یونیکس راهی برای ردیابی زمان به صورت مجموع ثانیه های جاری است. این شمارش در دوره یونیکس در 1 ژانویه 1970 شروع می شود. برای کم کردن یک روز، 86400 ثانیه (که معادل 24 ساعت است) از مهر زمانی فعلی کم می کنیم.
import time
now = time.time()
yesterday_timestamp = now - 86400
yesterday = time.ctime(yesterday_timestamp)
print("Current date:", time.ctime(now))
print("Yesterday's date:", yesterday)
مجدداً این کد تاریخ جاری و تاریخ روز قبل را چاپ می کند.
سایر دستکاری های تاریخ
بسیاری از دستکاری های تاریخ دیگری نیز وجود دارد که ممکن است به غیر از کم کردن یک روز نیاز داشته باشید. بیایید روش کم کردن بیش از یک روز از تاریخ را بررسی کنیم.
کم کردن بیش از یک روز
اگر می خواهید بیش از یک روز کم کنید، به سادگی می توانید مقدار آن را تغییر دهید days
پارامتر در timedelta
هدف – شی. به عنوان مثال، برای کم کردن سه روز از تاریخ فعلی:
from datetime import datetime, timedelta
today = datetime.now()
three_days_ago = today - timedelta(days=3)
print("Today's date:", today)
print("Date three days ago:", three_days_ago)
این اسکریپت تاریخ امروز و تاریخ سه روز پیش را چاپ خواهد کرد. شی timedelta کاملاً منعطف است و می توان از آن برای کم کردن هر تعداد روز، هفته یا حتی سال از تاریخ استفاده کرد.
کم کردن یک هفته
فرض کنید یک تاریخ دارید و می خواهید بدانید که تاریخ دقیقا یک هفته پیش چه بوده است. پایتون datetime
ماژول این عملیات را ساده می کند. در اینجا یک مثال است:
from datetime import datetime, timedelta
today = datetime.now()
one_week_ago = today - timedelta(weeks=1)
print(f"Today's date: {today}")
print(f"One week ago: {one_week_ago}")
وقتی این کد را اجرا می کنید، خروجی مشابه زیر دریافت خواهید کرد:
Today's date: 2022-09-30 16:50:21.992728
One week ago: 2022-09-23 16:50:21.992728
توجه داشته باشید: یادت باشد timedelta
تابع به شما امکان می دهد روز، ثانیه، میکروثانیه، میلی ثانیه، دقیقه، ساعت و هفته را کم کنید. به دلیل طول متغیر آنها مستقیماً ماه ها یا سال ها را پشتیبانی نمی کند.
کم کردن یک ماه
کم کردن یک ماه از تاریخ به دلیل تغییر در تعداد روزهای یک ماه کمی بیشتر است. برای انجام این کار، میتوانیم تابعی ایجاد کنیم که بررسی میکند کم کردن یک روز باعث تغییر ماه میشود یا خیر. اگر چنین است، یک روز اضافی را کم می کند تا به ماه قبل برسد.
from datetime import datetime, timedelta
def subtract_a_month(date):
target_month = (date.month - 1) if date.month != 1 else 12
while date.month != target_month:
date -= timedelta(days=1)
return date
today = datetime.now()
one_month_ago = subtract_a_month(today)
print(f"Today's date: {today}")
print(f"One month ago: {one_month_ago}")
اجرای این کد ممکن است خروجی ای مانند زیر به شما بدهد:
Today's date: 2022-09-30 16:50:21.992728
One month ago: 2022-08-30 16:50:21.992728
نتیجه
در این بایت، چند روش برای کم کردن دورههای زمانی مختلف از تاریخ با استفاده از پایتون، از جمله یک هفته و یک ماه، بررسی کردهایم. در حالی که پایتون datetime
و calendar
ماژول ها ابزار بسیار خوبی برای داشتن هستند، ممکن است همه موارد استفاده را پوشش ندهند. برای دستکاری های پیچیده تر تاریخ، از کتابخانه ای مانند استفاده کنید dateutil.
(برچسبها به ترجمه)# python
منتشر شده در 1402-12-28 07:28:04