第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何在年/月/周/日中獲得兩個日期之間的差異?

如何在年/月/周/日中獲得兩個日期之間的差異?

holdtom 2019-08-08 15:41:24
如何在年/月/周/日中獲得兩個日期之間的差異?如何以有效的方式在年/月/周/日中獲得兩個日期之間的差異?例如。兩個日期之間的差異是1年,2個月,3個星期,4天。差異表示兩個日期之間的年(s),月(s),周(s)和日(s)的計數(shù)。
查看完整描述

3 回答

?
楊魅力

TA貢獻1811條經(jīng)驗 獲得超6個贊

這實際上非常棘手。不同的總天數(shù)可能會產(chǎn)生相同的結果。例如:

  • 2008年6月19日至2010年6月19日= 2年,也是365 * 2天

  • 2006年6月19日至2008年6月19日= 2年,但由于閏年也是365 + 366天

你可能想要減去年數(shù),直到你得到兩個相隔不到一年的日期。然后減去幾個月,直到你得到兩個相隔不到一個月的日期。

進一步混淆:當你可能以“3月30日”開始時減去(或增加)月份是棘手的 - 比這更早一個月?

更進一步的混亂(可能不相關):即使一天也不總是24小時。夏令時任何人?

更進一步的混亂(幾乎肯定相關):即使一分鐘也不總是60秒。閏秒非常令人困惑......

我現(xiàn)在沒有時間找出正確的方法 - 這個答案主要是為了提出這個事實并不像聽起來那么簡單。

編輯:不幸的是,我沒有足夠的時間來完全回答這個問題。我建議你先定義一個代表一個結構的結構Period

public struct Period{
    private readonly int days;
    public int Days { get { return days; } }
    private readonly int months;
    public int Months { get { return months; } }
    private readonly int years;
    public int Years { get { return years; } }

    public Period(int years, int months, int days)
    {
        this.years = years;
        this.months = months;
        this.days = days;
    }

    public Period WithDays(int newDays)
    {
        return new Period(years, months, newDays);
    }

    public Period WithMonths(int newMonths)
    {
        return new Period(years, newMonths, days);
    }

    public Period WithYears(int newYears)
    {
        return new Period(newYears, months, days);
    }

    public static DateTime operator +(DateTime date, Period period)
    {
        // TODO: Implement this!
    }

    public static Period Difference(DateTime first, DateTime second)
    {
        // TODO: Implement this!
    }}

我建議你首先實現(xiàn)+運算符,它應該通知Difference方法 - 你應該確保first + (Period.Difference(first, second)) == second所有firstsecond值。

首先編寫一系列單元測試 - 最初是“簡單”的案例,然后轉向涉及閏年的棘手問題。我知道正常的方法是一次編寫一個測試,但在開始任何實現(xiàn)工作之前,我會親自集體討論它們。

讓自己有一天正確實施。這是棘手的事情。

請注意,我在這里省略了幾周 - 這個值至少很容易,因為它總是7天。因此,給定(正)期間,您將擁有:

int years = period.Years;int months = period.Months;int weeks = period.Days / 7;int daysWithinWeek = period.Days % 7;

(我建議你甚至不要考慮消極時期 - 確保一切都是正面的。)


查看完整回答
反對 回復 2019-08-08
?
動漫人物

TA貢獻1815條經(jīng)驗 獲得超10個贊

多年來/月/周的正確差計算,日歷中的CultureInfo的必須考慮:

  • 飛躍與非閏年

  • 不同天數(shù)的月份

  • 具有不同周數(shù)的年份(根據(jù)一周的第一天和日歷周規(guī)則而變化)

.NET時間段庫DateDiff類尊重所有這些因素:

// ----------------------------------------------------------------------public void DateDiffSample(){
  DateTime date1 = new DateTime( 2009, 11, 8, 7, 13, 59 );
  Console.WriteLine( "Date1: {0}", date1 );
  // > Date1: 08.11.2009 07:13:59
  DateTime date2 = new DateTime( 2011, 3, 20, 19, 55, 28 );
  Console.WriteLine( "Date2: {0}", date2 );
  // > Date2: 20.03.2011 19:55:28

  DateDiff dateDiff = new DateDiff( date1, date2 );

  // differences
  Console.WriteLine( "DateDiff.Years: {0}", dateDiff.Years );
  // > DateDiff.Years: 1
  Console.WriteLine( "DateDiff.Quarters: {0}", dateDiff.Quarters );
  // > DateDiff.Quarters: 5
  Console.WriteLine( "DateDiff.Months: {0}", dateDiff.Months );
  // > DateDiff.Months: 16
  Console.WriteLine( "DateDiff.Weeks: {0}", dateDiff.Weeks );
  // > DateDiff.Weeks: 70
  Console.WriteLine( "DateDiff.Days: {0}", dateDiff.Days );
  // > DateDiff.Days: 497
  Console.WriteLine( "DateDiff.Weekdays: {0}", dateDiff.Weekdays );
  // > DateDiff.Weekdays: 71
  Console.WriteLine( "DateDiff.Hours: {0}", dateDiff.Hours );
  // > DateDiff.Hours: 11940
  Console.WriteLine( "DateDiff.Minutes: {0}", dateDiff.Minutes );
  // > DateDiff.Minutes: 716441
  Console.WriteLine( "DateDiff.Seconds: {0}", dateDiff.Seconds );
  // > DateDiff.Seconds: 42986489

  // elapsed
  Console.WriteLine( "DateDiff.ElapsedYears: {0}", dateDiff.ElapsedYears );
  // > DateDiff.ElapsedYears: 1
  Console.WriteLine( "DateDiff.ElapsedMonths: {0}", dateDiff.ElapsedMonths );
  // > DateDiff.ElapsedMonths: 4
  Console.WriteLine( "DateDiff.ElapsedDays: {0}", dateDiff.ElapsedDays );
  // > DateDiff.ElapsedDays: 12
  Console.WriteLine( "DateDiff.ElapsedHours: {0}", dateDiff.ElapsedHours );
  // > DateDiff.ElapsedHours: 12
  Console.WriteLine( "DateDiff.ElapsedMinutes: {0}", dateDiff.ElapsedMinutes );
  // > DateDiff.ElapsedMinutes: 41
  Console.WriteLine( "DateDiff.ElapsedSeconds: {0}", dateDiff.ElapsedSeconds );
  // > DateDiff.ElapsedSeconds: 29

  // description
  Console.WriteLine( "DateDiff.GetDescription(1): {0}", dateDiff.GetDescription( 1 ) );
  // > DateDiff.GetDescription(1): 1 Year
  Console.WriteLine( "DateDiff.GetDescription(2): {0}", dateDiff.GetDescription( 2 ) );
  // > DateDiff.GetDescription(2): 1 Year 4 Months
  Console.WriteLine( "DateDiff.GetDescription(3): {0}", dateDiff.GetDescription( 3 ) );
  // > DateDiff.GetDescription(3): 1 Year 4 Months 12 Days
  Console.WriteLine( "DateDiff.GetDescription(4): {0}", dateDiff.GetDescription( 4 ) );
  // > DateDiff.GetDescription(4): 1 Year 4 Months 12 Days 12 Hours
  Console.WriteLine( "DateDiff.GetDescription(5): {0}", dateDiff.GetDescription( 5 ) );
  // > DateDiff.GetDescription(5): 1 Year 4 Months 12 Days 12 Hours 41 Mins
  Console.WriteLine( "DateDiff.GetDescription(6): {0}", dateDiff.GetDescription( 6 ) );
  // > DateDiff.GetDescription(6): 1 Year 4 Months 12 Days 12 Hours 41 Mins 29 Secs} // DateDiffSample

DateDiff還計算Quarters的差異。


查看完整回答
反對 回復 2019-08-08
  • 3 回答
  • 0 關注
  • 548 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網(wǎng)微信公眾號