web-dev-qa-db-ja.com

Pythonで日付に5日を追加する

私は日付"10/10/11(m-d-y)"を持っていて、Pythonスクリプトを使ってそれに5日を加えたいです。月末にも機能する一般的な解決策を検討してください。

私は以下のコードを使っています。

import re
from datetime import datetime

StartDate = "10/10/11"

Date = datetime.strptime(StartDate, "%m/%d/%y")

print Date - >印刷中'2011-10-10 00:00:00'

今、私はこの日付に5日を追加したいです。私は以下のコードを使いました。

EndDate = Date.today()+timedelta(days=10)

これはこのエラーを返しました:

name 'timedelta' is not defined
285
MuraliKrishna

前の答えは正しいですが、一般的にはそれを行うことをお勧めします。

import datetime

それから、 datetime.timedelta を使用します。

date_1 = datetime.datetime.strptime(start_date, "%m/%d/%y")

end_date = date_1 + datetime.timedelta(days=10)
435
Botond Béres

最初にtimedeltaをインポートしてください。

from datetime import timedelta

そしてDate.today()は今日の日時を返します。

EndDate = Date + timedelta(days=10)
98
DrTyrsa

もしあなたがパンダをすでに使っているのなら、フォーマットを指定しないことで少しスペースを節約できます。

import pandas as pd
startdate = "10/10/2011"
enddate = pd.to_datetime(startdate) + pd.DateOffset(days=5)
14
fantabolous

私はあなたがそのような何かを逃していると思います:

from datetime import timedelta
12
vstm

dateutil's relativedeltaを使用して日付に日付を追加する別の方法を次に示します。

from datetime import datetime
from dateutil.relativedelta import relativedelta

print 'Today: ',datetime.now().strftime('%d/%m/%Y %H:%M:%S') 
date_after_month = datetime.now()+ relativedelta(days=5)
print 'After 5 Days:', date_after_month.strftime('%d/%m/%Y %H:%M:%S')

出力:

今日:25/06/2015 15:56:09

5日後:2015年6月30日15:56:09

11
Atul Arvind

これは今から指定日数を取得する機能です。

import datetime

def get_date(dateFormat="%d-%m-%Y", addDays=0):

    timeNow = datetime.datetime.now()
    if (addDays!=0):
        anotherTime = timeNow + datetime.timedelta(days=addDays)
    else:
        anotherTime = timeNow

    return anotherTime.strftime(dateFormat)

使用法:

addDays = 3 #days
output_format = '%d-%m-%Y'
output = get_date(output_format, addDays)
print output
8
Guray Celik

今すぐ日付を追加したい場合は、このコードを使用できます。

from datetime import datetime
from datetime import timedelta


date_now_more_5_days = (datetime.now() + timedelta(days=5) ).strftime('%Y-%m-%d')
7
Jorge Omar MH

冗長なコード を持ち、 名前の衝突 datetimeとdatetime.datetimeの間を避けるためには、クラスの名前を CamelCase namesに変更する必要があります。

from datetime import datetime as DateTime, timedelta as TimeDelta

それで、あなたは以下をすることができます、そして私はそれがより明確であると思います。

date_1 = DateTime.today() 
end_date = date_1 + TimeDelta(days=10)

また、 名前の競合はありません 後でimport datetimeにしたい場合は/ /.

5
toto_tico

一般的にあなたは今答えを持っていますが、多分私が作成した私のクラスも役立つでしょう。私にとっては、Pyhonプロジェクトでこれまでに持っていたすべての要件を解決します。

class GetDate:
    def __init__(self, date, format="%Y-%m-%d"):
        self.tz = pytz.timezone("Europe/Warsaw")

        if isinstance(date, str):
            date = datetime.strptime(date, format)

        self.date = date.astimezone(self.tz)

    def time_delta_days(self, days):
        return self.date + timedelta(days=days)

    def time_delta_hours(self, hours):
        return self.date + timedelta(hours=hours)

    def time_delta_seconds(self, seconds):
        return self.date + timedelta(seconds=seconds)

    def get_minimum_time(self):
        return datetime.combine(self.date, time.min).astimezone(self.tz)

    def get_maximum_time(self):
        return datetime.combine(self.date, time.max).astimezone(self.tz)

    def get_month_first_day(self):
        return datetime(self.date.year, self.date.month, 1).astimezone(self.tz)

    def current(self):
        return self.date

    def get_month_last_day(self):
        lastDay = calendar.monthrange(self.date.year, self.date.month)[1]
        date = datetime(self.date.year, self.date.month, lastDay)
        return datetime.combine(date, time.max).astimezone(self.tz)

使用方法

  1. self.tz = pytz.timezone("Europe/Warsaw")-ここで、プロジェクトで使用するタイムゾーンを定義します
  2. GetDate("2019-08-08").current()-これは、pt 1で定義したタイムゾーンで文字列の日付を時間対応オブジェクトに変換します。デフォルトの文字列形式はformat="%Y-%m-%d"ですが、自由に変更できます。 (例:GetDate("2019-08-08 08:45", format="%Y-%m-%d %H:%M").current()
  3. GetDate("2019-08-08").get_month_first_day()は、指定された日付(文字列またはオブジェクト)の月の最初の日を返します
  4. GetDate("2019-08-08").get_month_last_day()は、指定された日付、月、前日を返します
  5. GetDate("2019-08-08").minimum_time()は、指定された日付の開始日を返します
  6. GetDate("2019-08-08").maximum_time()は、指定された日付の日の終わりを返します
  7. GetDate("2019-08-08").time_delta_days({number_of_days})は指定された日付を返し、{日数}を追加します(昨日はGetDate(timezone.now()).time_delta_days(-1)を呼び出すこともできます)
  8. GetDate("2019-08-08").time_delta_haours({number_of_hours}) pt 7に似ていますが、何時間も働いています
  9. GetDate("2019-08-08").time_delta_seconds({number_of_seconds}) pt 7と似ていますが、秒単位で動作します
0

あなたができるtimedeltasを使う:

import datetime
today=datetime.date.today()


time=datetime.time()
print("today :",today)

# One day different .
five_day=datetime.timedelta(days=5)
print("one day :",five_day)
#output - 1 day , 00:00:00


# five day extend .
fitfthday=today+five_day
print("fitfthday",fitfthday)


# five day extend .
fitfthday=today+five_day
print("fitfthday",fitfthday)
#output - 
today : 2019-05-29
one day : 5 days, 0:00:00
fitfthday 2019-06-03
0
sameer_nubia