දින දෙකක් (දින ගණන) අතර වෙනස ගණනය කරන්න?


1126

මෙම ප්‍රශ්නයට ජාවා , ජාවාස්ක්‍රිප්ට් සහ පීඑච්පී සඳහා පිළිතුරු ලබා දී ඇති බව මට පෙනේ , නමුත් සී # නොවේ. ඉතින්, C # හි දින දෙකක් අතර දින ගණන ගණනය කරන්නේ කෙසේද?


7
මෙය ඉතා ප්‍රයෝජනවත් බව මට පෙනී ගියේය .. ආරම්භක දිනය සහ අවසන් දිනය අතර දිනයන් ලැයිස්තුවක් ලබා ගැනීම මෙය අනාගතයේ දී විශේෂයෙන් මෙය සොයන ඕනෑම කෙනෙකුට උපකාරී වේ යැයි
සිතමි

එකතු කිරීම සහ අඩු කිරීමේ ක්‍රියාකරුවන් ඔබ අපේක්ෂා කරන පරිදි DateTimeසහ TimeSpanවර්ග සඳහා අධික ලෙස පටවනු ලැබේ . මේ සියල්ල ඉතා සරල ය. - ඔබ මුහුණ දුන් නිශ්චිත ගැටලුව කුමක්ද?
BrainSlugs83

Answers:


2074

උපකල්පනය StartDateසහ EndDateවර්ගය DateTime:

(EndDate - StartDate).TotalDays

570
මෙම පිළිතුර පැහැදිලිවම නිවැරදි ය, නමුත් අර්ධ දින වෙනස දශමයෙන් නිරූපණය වනවාට වඩා (a - b).Daysමුළු දින ගැන ඔබ උනන්දුවක් දක්වන්නේ නම් ඔබට ද භාවිතා කළ හැකිය . intdouble
PFranchise

26
මෙය අඩු දින 1 ක් ආපසු එනු ඇත, 08/31 / 2013-08 / 01/2013 = 31 නමුත් මෙය ආපසු එන්නේ 30 ක් පමණි.
JRB

61
As ජස්රාජ්බිෂ්නෝයි - ඔබේ ගණිතය පරීක්ෂා කිරීමට ඔබට අවශ්‍ය විය හැකිය. 31 - 1 යනු කුමක්ද?
ග්‍රෙග් බීච්

33
ජස්රාජ් ද නිවැරදියි, දින දෙකම ඇතුළත් කිරීමෙන් එය දිනකට අඩු වෙනසක් ලබා දෙයි. ඒ සියල්ල ඉදිරිදර්ශනය මත රඳා පවතී.
ෆහාඩ් අබීඩ් ජන්ජුවා

28
A ෆහාඩ් අබීඩ් ජන්ජුවා එය කාරණයක් හෝ ඉදිරිදර්ශනයක් නොව කාලය පිළිබඳ කාරණයක්, මම අදහස් කළේ, දිනයෙහි කාල කොටසයි. 08/31/2013 - 08/01/2013 සැබවින්ම අදහස් කරන්නේ 08/31/2013 00:00:00 - 08/01/2013 00:00:00 එයින් දින 30 ක් ගතවීමට හේතුව පැහැදිලි කරයි, මන්ද 08/31/2013 දිනය පටන් ගන්නවා. ඩේටයිම් දේපල / ක්ෂේත්‍රයක් විමසීමේදී, පරාසයක් ලබා ගැනීම සඳහා සුදුසු කොන්දේසිය වන්නේ " ඩේට් ටයිම් ප්‍රොපර්ටි > = ඩේට් ඇන්ඩ් ඇන්ඩ් ඩේට් ටයිම් ප්‍රොපර්ටි < ටෝඩේට්. ඇඩ්ඩේස් (1)"
මිගෙල් වේලෝසෝ

178

ඉහළම පිළිතුර නිවැරදියි, කෙසේ වෙතත් ඔබ සම්පූර්ණ දිනක් පමණක් පූර්ණ ලෙස කැමති නම් සහ දිනයෙහි කාල සංරචකය අත්හැරීමට සතුටු වන්නේ නම් සලකා බලන්න:

(EndDate.Date - StartDate.Date).Days

නැවත උපකල්පනය StartDateසහ EndDateවර්ගයේ වීම DateTime.


7
හොඳම පිළිතුර “දින ගණන” සාමාන්‍යයෙන් මුළු දිනම අදහස් කරන බැවිනි. බව සඳහන් එය වටිනා Days(වැනි අනෙකුත් ගුණ ලෙස 365 නතර නොවේ Hours, Minutes, Secondඊළඟ ඉහළ දේපල ආරම්භ කරන nax අගය වන). එය TotalDaysදිනකට භාගයක් නොමැතිව හා intඒ වෙනුවට නැවත පැමිණේ double.
ටිම් ෂ්මෙල්ටර්

1
මෙය සැමවිටම අපේක්ෂා කළ පරිදි ක්‍රියාත්මක වේද? නිදසුනක් ලෙස, සංසන්දනය කරන දිනවලින් එකක් “ඉදිරි වසන්තය” දිවා ආලෝකය ඉතිරි කිරීමේ වේලාව නම්, අඩු කිරීමෙන් පැය 23 ක කාල පරාසයක් නිපදවිය හැකි අතර, එසේ නම්, එහි වටිනාකම .එය පැය 23 ක කාල පරාසය 0 වේ ? (මම මෙය අත්හදා බැලීමට උත්සාහ කළෙමි, නමුත් මගේ ප්‍රති results ල මෙතෙක් අවිනිශ්චිතය - stackoverflow.com/questions/43644252/… )
ජෝන් ෂ්නයිඩර්

ඔව්, මට අවශ්‍ය වූයේ මෙයයි - වටිනාම පිළිතුර cmon දැන් දින ගණනය කිරීමේදී මිනිත්තු සහ තත්පර ගැන සිතීමට කිසිවෙකුට අවශ්‍ය නැත
solujic

මෙය දින 1,5 ක් පසුකර ඇත්නම් .දවස් ශ්‍රිතය පෙන්වන්නේ දින 1 ක් පමණක්ද? දින 2 ක් පෙන්වීමට මට එය වෙනස් කළ හැක්කේ කෙසේද? මට සෑම විටම + 1 දින එකතු කළ යුතුද?
CDrosos

2
මෙය ඉහළට ඔසවා තැබීම, බොහෝ විට ඔබට "දින දෙකක් අතර කැලැන්ඩර් දින" අවශ්‍ය වනු ඇත, "පැය 24 ක කාල පරතරයන්" පමණක් නොවේ. උදාහරණයක් ලෙස, ඔබ "X දිනකට පෙර" ලේබලයක් කාලරාමුවක පෙන්විය යුතුය. මෙම අවස්ථාවේ දී "සඳුදා රාත්‍රී 11:59" සහ "අඟහරුවාදා උදේ 7:00" අතර වෙනස "දින 1 (පෙර)" විය යුතුය ... එබැවින් .Dateකොටස සැබවින්ම ප්‍රයෝජනවත් වේ. මම පැහැදිලි කරමි යැයි සිතමි
ඇලෙක්ස්

140

දිනය උපස්ථරයේ ප්‍රති result ලය වන ටයිම්ස්පන් වස්තුව භාවිතා කරන්න:

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
දිනය ටයිම් xmas = නව දිනය ටයිම් (දිනය ටයිම්.දෝ.අය, 12, 25); එය 2009 දී පමණක් නොව වසරින් වසර ක්‍රියාත්මක වේ :)

1
අඩු කිරීම () යනු ඩේටයිම්ස් සඳහා වූ ක්‍රියාකරු ඕවර්ලෝඩ් වන අතර එමඟින් එයම සමාන වේ (xmas - DateTime.Today) .TotalDays - තව දුරටත්.
මාර්ක්

20

යමෙකුට මුළු දින ගණන දෙගුණයක් ලෙස අවශ්‍ය නම් ( a, bවර්ගය DateTime):

 (a.Date - b.Date).TotalDays

3
දිනය කොටස සෑම විටම මධ්‍යම රාත්‍රිය වන බැවින් මෙය සැමවිටම සම්පූර්ණ සංඛ්‍යාවක් වනු ඇත (එනම් n.00000).
ජොඑන්සීඒ

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 :

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

මෙය අද (DateTime.UtcNow.Date) සිට අපේක්ෂිත දිනය දක්වා (myDateTime.Date) මුළු දින ගණනය කරයි.

MyDateTime ඊයේ හෝ අදට වඩා පැරණි දිනයක් නම්, මෙය ධනාත්මක (+) නිඛිල ප්‍රති .ලයක් ලබා දෙනු ඇත.

අනෙක් පැත්තෙන්, myDateTime හෙට හෝ අනාගත දිනයේ නම්, එකතු කිරීමේ නීති නිසා මෙය negative ණ (-) නිඛිල ප්‍රති result ලයක් ලබා දෙනු ඇත.

සුබ කේතීකරණයක්! ^ _ ^


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සහ bලෙස DateTime:

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
මෙම කේත ස්නිපටය මඟින් ප්‍රශ්නය විසඳිය හැකි අතර, පැහැදිලි කිරීමක් ඇතුළුව ඔබේ තනතුරේ ගුණාත්මකභාවය වැඩි දියුණු කිරීමට උපකාරී වේ. අනාගතයේ දී ඔබ පා readers කයන් සඳහා වන ප්‍රශ්නයට පිළිතුරු සපයන බව මතක තබා ගන්න, ඔබේ කේත යෝජනාවට හේතු එම පුද්ගලයින් නොදැන සිටිය හැකිය. කරුණාකර ඔබේ කේතය පැහැදිලි කිරීමේ අදහස් දැක්වීමක් නොකිරීමට උත්සාහ කරන්න, මෙය කේතයේ සහ පැහැදිලි කිරීම් දෙකේම කියවීමේ හැකියාව අඩු කරයි!
ආයුබෝවන් ස්ටැක්එක්ස්චේන්

2
ටෝල්ට් ඩේස් දෙගුණයක් ලබා දෙයි: 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;
    }
}   

22
මෙම කේතය බොහෝ ආකාරවලින් වැරදියි! 1) ප්‍රශ්නයට සම්බන්ධ නැති බොහෝ වින්ෆෝම් කේතය. 2) භාවිතා කරමින් පණිවිඩ පෙට්ටි පෙන්වීමේ වයර් ක්‍රමය (මම අනුමාන කරන්නේ වෙබ් බ්‍රව්සර පාලනයක්). 3) දැනටමත් ලේබලයේ පෙන්වා ඇති පෙළක් පෙන්වීමට වෙබ් බ්‍රව්සර් පාලනයක් භාවිතා කිරීම. 4) ඔබ "MyDateA - MyDateB" කරන්නේ නම් කෙසේ හෝ භාවිතා වන OperatorOverload Subtract () ("-" මෙහෙයුම් සඳහා පෙරනිමිය) භාවිතා කිරීම. 5) මෙම කේත ගොඩට පැහැදිලි කිරීමක් නැත.
මාක්
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.