দুটি তারিখের মধ্যে পার্থক্য গণনা (দিনের সংখ্যা)?


1092

আমি দেখতে পাচ্ছি যে জাভা , জাভাস্ক্রিপ্ট এবং পিএইচপি এর জন্য এই প্রশ্নের উত্তর দেওয়া হয়েছে , তবে সি # নয়। সুতরাং, কে কীভাবে সি # তে দুটি তারিখের মধ্যে দিনের সংখ্যা গণনা করতে পারে?


7
আমি এটি বেশ
কার্যকরভাবে

সংযোজন এবং বিয়োগ অপারেটরগুলি আপনার প্রত্যাশা অনুযায়ী DateTimeTimeSpanপ্রকারগুলির জন্য ওভারলোড হয় । সব কিছুই বেশ সোজা। - কোন সঠিক সমস্যার মুখোমুখি হয়েছিল?
BrainSlugs83

উত্তর:


2012

ধরে নিচ্ছি StartDateএবং EndDateপ্রকারভেদে DateTime:

(EndDate - StartDate).TotalDays

549
এই উত্তরটি স্পষ্টতই সঠিক, তবে আপনি (a - b).Daysযদি আংশিক দিনের পার্থক্যের দশমিক প্রতিনিধিত্বের intপরিবর্তে মোট দিনগুলিতে আগ্রহী হন তবে আপনি এটিও ব্যবহার করতে পারেন double
পিফরঞ্চাইজ

25
এটি 1 আরও কম দিন, 08/31 / 2013-08 / 01/2013 = 31 এ ফিরে আসবে তবে এটি কেবল 30 এ ফিরে আসবে।
জেআরবি

60
@ জারাজরাজবিশনোই - আপনি নিজের গণিতগুলি পরীক্ষা করতে চাইতে পারেন। 31 - 1 কী?
গ্রেগ বিচ

33
জাসরাজও এক অর্থে সঠিক ছিল যে উভয় তারিখ সহ অন্তর্ভুক্তি এটি একটি দিনের চেয়ে কম পার্থক্য করে। এটি সমস্ত দৃষ্টিভঙ্গির উপর নির্ভর করে।
ফাহাদ আবিদ জানজুয়া

28
@ ফাহাদআবিডজানজুয়া এটি কোনও বিষয় বা দৃষ্টিভঙ্গি নয় বরং সময়ের বিষয়, মানে, তারিখের সময় অংশ। 08/31/2013 - 08/01/2013 প্রকৃত অর্থ 08/31/2013 00:00:00 - 08/01/2013 00:00:00 যা এটি 30 দিনের কারণ ব্যাখ্যা করে, কারণ 08/31/2013 দিনটি সবেমাত্র শুরু হইতেছে. এটিও ব্যাখ্যা করে কেন, ডেটটাইম সম্পত্তি / ক্ষেত্রের বিষয়ে জিজ্ঞাসা করার সময়, একটি পরিসীমা পাওয়ার উপযুক্ত শর্ত হ'ল " তারিখটাইমপ্রসারণ > = থেকে তারিখ এবং তারিখের সময়প্রাপ্তি < টুডেট.এডডয়েস (1)"
মিগুয়েল ভেলোসো

159

শীর্ষস্থানীয় উত্তরটি সঠিক, তবে আপনি যদি কেবলমাত্র পুরো দিনগুলি কোনও পূর্ববর্তী দিন হিসাবে চান এবং তারিখের সময় উপাদানটি রেখে যেতে খুশি হন তবে বিবেচনা করুন:

(EndDate.Date - StartDate.Date).Days

আবার ধরে নিচ্ছি StartDateএবং EndDateটাইপ হয় DateTime


7
সেরা উত্তর কারণ "দিনের সংখ্যা" সাধারণত পুরো দিনগুলি বোঝায়। এটা তোলে এর মূল্য লক্ষ করেন, Days365 থামবে না (মত অন্যান্য বৈশিষ্ট্য যেমন Hours, Minutes, Secondযা nax মান যেখানে পরবর্তী উচ্চতর সম্পত্তি শুরু)। এটি একই রকম TotalDaysতবে কোনও দিনের ভগ্নাংশ ছাড়াই এবং intপরিবর্তে ফিরে double
টিম শেমলেটার

এটি কি সর্বদা প্রত্যাশা মতো কাজ করবে? উদাহরণস্বরূপ, যদি কোনও দিনের তুলনা করা হয় "স্প্রিং ফরোয়ার" দিবালোক সেভিং টাইম ডে, বিয়োগটি 23 ঘন্টার টাইমস্প্যান তৈরি করতে পারে এবং যদি তাই হয় তবে। 23-ঘন্টা সময়ের ব্যবধানের মান 0 হবে ? (আমি নিজেই এটির সাথে পরীক্ষার চেষ্টা করেছি, তবে আমার ফলাফলগুলি এখনও অবধি নিষ্পত্তির নয় - stackoverflow.com/questions/43644252/… )
জন স্নাইডার

হ্যাঁ, এটি আমার প্রয়োজন ছিল - সর্বাধিক মূল্যবান উত্তর সিমন এখন কেউ গণনার দিনগুলি সম্পর্কে মিনিট এবং সেকেন্ড সম্পর্কে ভাবতে চায় না
sol জুনিক

যদি কেবল ১,৫ দিন এটি কেটে যায়? ডেস ফাংশনটি কেবল ১ দিন দেখায়? 2 দিন দেখানোর জন্য আমি কীভাবে এটি পরিবর্তন করতে পারি? আমাকে কেবল সর্বদা + 1 দিন যোগ করতে হবে?
সিডিরোসস

2
এটিকে প্রাধান্য দেওয়া, কারণ খুব ঘন ঘন আপনার "দুটি তারিখের মধ্যে ক্যালেন্ডার দিন" প্রয়োজন, কেবল "24 ঘন্টা ব্যবধানের সংখ্যা" নয়। উদাহরণস্বরূপ, আপনাকে একটি টাইমলাইনে একটি "X দিন আগে" লেবেল প্রদর্শন করতে হবে। এই ক্ষেত্রে "সোমবার 11:59 pm" এবং "মঙ্গলবার সকাল 7:00" এর মধ্যে পার্থক্যটি "1 দিন (আগে)" হওয়া উচিত ... সুতরাং .Dateঅংশটি সত্যিই দরকারী। আশা করি আমি নিজেকে পরিষ্কার করছি
অ্যালেক্স

138

টাইমস্প্যান অবজেক্টটি ব্যবহার করুন যা তারিখ বিয়োগের ফলাফল:

DateTime d1;
DateTime d2;
return (d1 - d2).TotalDays;

2
আপভোটেড কেবল কারণ এটি স্পষ্ট করে দেয় যে (d1 - d2) টাইমস্প্যান অবজেক্টটি ফিরিয়ে দেবে।
মরভেল

47

আমি মনে করি এটি আপনি যা চান তা করবে:

DateTime d1 = DateTime.Now;
DateTime d2 = DateTime.Now.AddDays(-1);

TimeSpan t = d1 - d2;
double NrOfDays = t.TotalDays;

34
DateTime xmas = new DateTime(2009, 12, 25);
double daysUntilChristmas = xmas.Subtract(DateTime.Today).TotalDays;

1
যাইহোক, ডেটটাইম ফর্ম্যাটের মধ্যে দিনগুলি পেতে? কারণ টেবিলগুলিতে একটি নির্দিষ্ট ক্ষেত্র পরিবর্তন করতে আমার প্রতিটি তারিখের প্রয়োজন :) সম্পাদনা: এটি পেয়েছেন এবং নীচের উত্তর হিসাবে পোস্ট করেছেন। ধন্যবাদ
sys_debug

4
ডেটটাইম এক্সমাস = নতুন ডেটটাইম (তারিখটাইম। আজকের দিন, বছর, 12, 25); এটি কেবল ২০০৯ নয় :) বছরের ভিত্তিতে এক বছরে কাজ করে দেবে

1
বিয়োগ () DateTimes জন্য OperatorOverload তাই তার একই "(বড়দিনের পর্ব - DateTime.Today) .TotalDays - শুধু আর।
মার্ক

20

যদি কেউ (ক ডবল পুরো দিনের numer চায় a, bধরনের DateTime):

 (a.Date - b.Date).TotalDays

3
এটি সর্বদা পুরো সংখ্যা হিসাবে থাকবে (অর্থাত্ n.00000) কারণ তারিখের অংশটি সর্বদা মধ্যরাত।
জোএনসিএ 21

20
// Difference in days, hours, and minutes.

TimeSpan ts = EndDate - StartDate;

// Difference in days.

int differenceInDays = ts.Days; // This is in int
double differenceInDays= ts.TotalDays; // This is in double

// Difference in Hours.
int differenceInHours = ts.Hours; // This is in int
double differenceInHours= ts.TotalHours; // This is in double

// Difference in Minutes.
int differenceInMinutes = ts.Minutes; // This is in int
double differenceInMinutes= ts.TotalMinutes; // This is in double

আপনি সেকেন্ড, মিলিসেকেন্ড এবং টিকের মধ্যেও পার্থক্য পেতে পারেন।


10

আপনি এটি চেষ্টা করতে পারেন

EndDate.Date.Subtract(DateTime.Now.Date).Days

2
আমার তারিখের পার্থক্য অর্ধেক দিন হওয়ায় এটি আমাকে সর্বোত্তমভাবে সহায়তা করেছিল তবে আমেরিকা যখন অস্ট্রেলিয়ার চেয়ে 1 দিন পিছনে রয়েছে তখন আমার দেখতে হবে আসলে এক দিনের পার্থক্য আছে। এই থ্রেডে উল্লিখিত অন্যান্য উত্তরগুলি শূন্য বা 1 এর নীচে কিছু ডাবল সংখ্যা দেখাচ্ছে যা আমার দরকার নেই।
ব্যারি গুভেনকায়া

এটি সর্বোত্তম উত্তর যখন উদ্দেশ্য হ'ল তারিখটি ইতিমধ্যে পরের দিনটি পেরিয়ে গেছে কিনা, সময়ের নিরিখে পুরো 24 ঘন্টা নয় কিনা তা পরীক্ষা করা।
oneberenjena

4

আমার মতো শিক্ষানবিশদের জন্য যা এই ক্ষুদ্র সমস্যাটির উপর হোঁচট খায়, একটি সাধারণ লাইনে, নমুনা রূপান্তর করে ইনটকে :

int totalDays = Convert.ToInt32((DateTime.UtcNow.Date - myDateTime.Date).TotalDays);

এটি আজ থেকে (তারিখটাইম.উত্তকনো ডট তারিখ) থেকে একটি পছন্দসই তারিখ (মাইডেটটাইম.ডেট) পর্যন্ত মোট দিন গণনা করে।

যদি মাইডেটটাইম গতকাল বা আজকের চেয়ে পুরোনো তারিখ হয় তবে এটি ইতিবাচক (+) পূর্ণসংখ্যার ফলাফল দেবে।

অন্যদিকে, যদি মাইডেটটাইম আগামীকাল বা ভবিষ্যতের তারিখে হয়, এটি সংযোজনের নিয়মের কারণে এটি একটি নেতিবাচক (-) পূর্ণসংখ্যার ফলাফল দেবে।

শুভ কোডিং! ^: _ ^


4

টাইমস্প্যান ব্যবহার করে সমস্যার সমাধান হবে কারণ এর অনেকগুলি বৈশিষ্ট্য রয়েছে:

DateTime strt_date = DateTime.Now;
DateTime end_date = Convert.ToDateTime("10/1/2017 23:59:59");
//DateTime add_days = end_date.AddDays(1);
TimeSpan nod = (end_date - strt_date);
Console.WriteLine(strt_date + "" + end_date + "" + "" + nod.TotalHours + "");
Console.ReadKey();

3

দুটি ধরণের জন্য aএবংbDateTime

DateTime d = DateTime.Now;
DateTime c = DateTime.Now;
c = d.AddDays(145);
string cc;
Console.WriteLine(d);
Console.WriteLine(c);
var t = (c - d).Days;
Console.WriteLine(t);
cc = Console.ReadLine();

0

প্রথমে এমন ক্লাস ঘোষণা করুন যা পরে ফিরে আসবে:

public void date()
{
    Datetime startdate;
    Datetime enddate;
    Timespan remaindate;

    startdate = DateTime.Parse(txtstartdate.Text).Date;
    enddate = DateTime.Parse(txtenddate.Text).Date;

    remaindate = enddate - startdate;

    if (remaindate != null)
    {
        lblmsg.Text = "you have left with " + remaindate.TotalDays + "days.";
    }
    else
    {
        lblmsg.Text = "correct your code again.";
    }
}

protected void btncal_Click(object sender, EventArgs e)
{
    date();
}

উপরের ক্লাসে কল করতে একটি বোতাম নিয়ন্ত্রণ ব্যবহার করুন। এখানে একটি উদাহরণ:


0

আপনি নীচের কোডটি ব্যবহার করতে পারেন:

 int DateDifInSecond = EndDate.Subtract(StartDate).TotalSeconds

0

দুটি তারিখের মধ্যে পার্থক্য পান এবং তারপরে দিনগুলি পান:

int total_days = (EndDate - StartDate).TotalDays

1
যদিও এই কোড স্নিপেট একটি ব্যাখ্যা সহ প্রশ্নটি সমাধান করতে পারে, সত্যিই আপনার পোস্টের মান উন্নত করতে সহায়তা করে। মনে রাখবেন যে আপনি ভবিষ্যতে পাঠকদের জন্য প্রশ্নের উত্তর দিচ্ছেন, এবং সেই লোকেরা আপনার কোড পরামর্শের কারণগুলি জানেন না। আপনার কোডটি ব্যাখ্যামূলক মন্তব্যে ভিড় না করার চেষ্টা করুন, কারণ এটি কোড এবং ব্যাখ্যা উভয়ের পাঠযোগ্যতা হ্রাস করে!
বিদায় স্ট্যাকএক্সচেঞ্জ

2
TotalDays ফেরৎ একটি ডবল: msdn.microsoft.com/en-us/library/... সুতরাং আপনি int- এ একটি রূপান্তর প্রয়োজন
qnguyen

-21
protected void Calendar1_SelectionChanged(object sender, EventArgs e)
{
    DateTime d = Calendar1.SelectedDate;
    // int a;
    TextBox2.Text = d.ToShortDateString();
    string s = Convert.ToDateTime(TextBox2.Text).ToShortDateString();
    string s1 =  Convert.ToDateTime(Label7.Text).ToShortDateString();
    DateTime dt = Convert.ToDateTime(s).Date;
    DateTime dt1 = Convert.ToDateTime(s1).Date;
    if (dt <= dt1)
    {
        Response.Write("<script>alert(' Not a valid Date to extend warranty')</script>");
    }
    else
    {
        string diff = dt.Subtract(dt1).ToString();
        Response.Write(diff);
        Label18.Text = diff;
        Session["diff"] = Label18.Text;
    }
}   

21
এই কোডটি অনেক উপায়ে ভুল! 1) প্রচুর উইনফর্ম কোড প্রশ্নের সাথে সম্পর্কিত নয়। 2) বার্তা বাক্সগুলি ব্যবহার করে তারযুক্ত উপায়ে ব্যবহার করে (আমার ধারণা একটি ওয়েব ব্রাউজার নিয়ন্ত্রণ)। 3) লেবেলে প্রদর্শিত কোনও পাঠ্য দেখানোর জন্য ওয়েব ব্রাউজার নিয়ন্ত্রণ ব্যবহার করে using ৪) অপারেটর ওভারলোড সাবট্র্যাক্ট () ব্যবহার করে ("-" ক্রিয়াকলাপের জন্য ডিফল্ট) যা আপনি যদি "মাইডেটএ - মাইডেটবি" করেন তবে যে কোনও ক্ষেত্রে ব্যবহৃত হয়। 5) কোডের এই স্তূপের কোনও ব্যাখ্যা নেই।
মার্ক
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.