পাইথনে একটি তারিখে 5 দিন যুক্ত করা হচ্ছে


366

আমার একটি তারিখ রয়েছে "10/10/11(m-d-y)"এবং আমি পাইথন স্ক্রিপ্টটি ব্যবহার করে এটিতে 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

12
সাধারণ ক্লু: যদি আপনি ত্রুটিটি পান তবে এর name 'timedelta' is not definedঅর্থ হ'ল আপনি timedeltaকোথাও সংজ্ঞায়িত করেন নি। পাইথন সাধারণত এর ত্রুটি বার্তাগুলি সম্পর্কে বেশ তথ্যপূর্ণ।
ক্যাট্রিয়েল

1
অনুসন্ধান কাজ করে না? এই কোড উদাহরণগুলির সমস্তটিতে সহায়তা হত: stackoverflow.com/search?q=python+timedelta । এখানে প্রায় 200 টিরও বেশি প্রশ্ন রয়েছে।
এসলট


9
আপনি পাঁচ দিন যোগ করতে চান, তবে তারপরে আপনার সময়সীমা আছে (দিনগুলি = 10) ... আমি কোথা থেকে 10 এসেছি এবং কেন এটি 5 নয় তা নিয়ে আমি বিভ্রান্ত
ফিফানজ

উত্তর:


556

পূর্ববর্তী উত্তরগুলি সঠিক তবে এটি করার জন্য এটি সাধারণত একটি ভাল অনুশীলন:

import datetime

তারপরে আপনার ব্যবহার হবে datetime.timedelta:

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

end_date = date_1 + datetime.timedelta(days=10)

7
ডেটটাইম.ডেটটাইম - দুবার কেন?
পলমোরিস

59
"ডেটটাইম আমদানির ডেটটাইম, টাইমডেল্টা" এর মতো আমদানি করা কোডটিতে পাঠযোগ্যতা যুক্ত করবে
ম্যানেল ক্লোস

8
@ পলমোরিস: আপনি মডিউলটিতে ক্লাসে strptimeপদ্ধতিটি কল করছেন , সুতরাং আপনাকে উল্লেখ করতে হবে । datetimedatetimedatetime.datetime
গ্রেম পেরো

6
আমরা সকলেই কি একমত হতে পারি যে সাধারণভাবে ব্যবহৃত শ্রেণীর নামটিকে মডিউলযুক্ত মডিউল হিসাবে একই নামকরণ করা বোবা ধারণা? কী datetime? আপনি জানতে কনভেনশনের উপর নির্ভর করতে পারবেন না, তবে সর্বদা আমদানির দিকে নজর দিতে হবে।
জিওনগ চিয়ামিভ

8
দীর্ঘ লেজ উত্তরাধিকার সমস্যা। এটি "হওয়া উচিত" from datetime import DateTimeযেহেতু ক্লাসগুলি ক্যামেলকেসড, তবে ডেটটাইম পিইপি 8 এর পূর্ববর্তী।
অ্যারন ম্যাকমিলিন

120

আমদানি timedeltaএবং dateপ্রথম।

from datetime import timedelta, date

এবং date.today()আজকের তারিখের সময়টি ফিরিয়ে দেবে, আপনি চান হতে পারেন

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

11
তারিখ.ডেট.টোডে () তারিখের পরিবর্তে আজ (আজ)
এলসাদেক

2
@ ড্যান-ক্লাসন এটি আমার পক্ষে কাজ করে না, dateঅবজেক্টের কোনও timedeltaপদ্ধতি নেই। পাইথনের সংস্করণটি আপনি কী ব্যবহার করছেন?
DrTyrsa

পছন্দ করুন হওয়া উচিত:from datetime import timedelta, date; date.today() + timedelta(days=10)
ড্যান-ক্লাসন

21

আপনি যদি ইতিমধ্যে পান্ডা ব্যবহার করছেন বলে মনে করেন তবে ফর্ম্যাটটি নির্দিষ্ট না করে আপনি একটু জায়গা সংরক্ষণ করতে পারেন:

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

আমার জন্য ভাল কাজ করে। ধন্যবাদ
রেনি

12

আমার ধারণা আপনি এরকম কিছু মিস করছেন:

from datetime import timedelta

12

ডেটুটিলের আপেলডেল্টা ব্যবহার করে তারিখে দিন যুক্ত করার জন্য এখানে আরও একটি পদ্ধতি রয়েছে ।

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 দিন পরে: 30/06/2015 15:56:09


10

আপনি যদি এখন থেকে দিন তারিখ যোগ করতে চান, আপনি এই কোডটি ব্যবহার করতে পারেন

from datetime import datetime
from datetime import timedelta


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

9

এখানে এখন + নির্দিষ্ট দিন থেকে পাওয়ার একটি ফাংশন

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

1
ভাল কোড। তবে আপনার আইএফটি get_date এ অ্যাডডেস পরীক্ষা করার জন্য প্রয়োজনীয় নয়
এডুয়ার্ডো

6

অর্ডার আছে জন্য কোড বাগাড়ম্বরপূর্ণ কম , এবং এড়ানোর নাম দ্বন্দ্ব DATETIME এবং datetime.datetime মধ্যে আপনার সাথে ক্লাস নামান্তর উচিত ক্যামেলকেস নাম থাকবে না।

from datetime import datetime as DateTime, timedelta as TimeDelta

সুতরাং আপনি নিম্নলিখিতটি করতে পারেন, যা আমি মনে করি এটি পরিষ্কার।

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

এছাড়াও, পরে যদি আপনি চান তবে কোনও নাম বিরোধ নেই beimport datetime


0

ব্যবহার করে timedeltaআপনি করতে পারেন:

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

সাধারণত আপনি এখন একটি উত্তর পেয়েছেন তবে আমার তৈরি আমার ক্লাসটিও সহায়ক হবে। আমার জন্য এটি আমার পাইহোন প্রকল্পগুলিতে আমার যে সমস্ত প্রয়োজনীয়তা ছিল তা সমাধান করে।

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 ১ এ সংজ্ঞায়িত করেছেন ডিফল্ট স্ট্রিং ফর্ম্যাট 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})প্রদত্ত তারিখটি + দিন দিন সংখ্যা add যোগ করুন (আপনি কলও করতে পারেন: GetDate(timezone.now()).time_delta_days(-1)গতকালের জন্য)
  8. GetDate("2019-08-08").time_delta_haours({number_of_hours}) পিটি to এর মতো তবে কয়েক ঘন্টা কাজ করা
  9. GetDate("2019-08-08").time_delta_seconds({number_of_seconds}) পিটি to এর মতো তবে সেকেন্ডে কাজ করা

0

কিছু সময় আমাদের তারিখ এবং তারিখ অনুসারে ব্যবহার করা প্রয়োজন। যদি আমরা তারিখ__আরঞ্জ ব্যবহার করি তবে আমাদের টু_ডেটের সাথে 1 দিন যোগ করতে হবে অন্যথায় ক্যোয়ারেট খালি হবে।

উদাহরণ:

ডেটটাইম আমদানির সময়সীমা থেকে

from_date = parse_date (অনুরোধ.পোস্ট ['from_date']]

টু_ডেট = পার্স_ডেট (অনুরোধ.পোস্ট ['টু_ডেট']) + টাইমডেল্টা (দিন = 1)

উপস্থিতি_লিস্ট = মডেল a ডেইলিএটিটেন্ডেন্স.অবজেক্টস.ফিল্টার (অ্যাটেডেট_আরজেন = [থেকে_ তারিখ, থেকে_ তারিখ])

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.