回答
如上所述,問題沒有答案,因爲月份開始於不同年份的不同日子(更不用說閏年併發症)。
僅僅減去364天就足夠了,這正好是52周,所以你最終得到的是同一個星期的日子?
這會工作我會認爲除了閏年,任何方式在這裏考慮到這些? – 2010-07-24 01:36:12
然後檢查星期幾是否一致。因爲閏年會將這一計算推遲一天。如果一週中的某天不同,則再減去一天。 – 2010-07-24 01:40:09
不,他們不會。 52周恰好是52周。現在,朱利安日期將會有兩種不同,而不是一種不同,但這仍然是一週中同一天最接近一年前的事件。 – 2010-07-24 02:30:09
DateTime now = DateTime.Now.Date;
DateTime sameDayLastYear = new DateTime(now.Year - 1, now.Month, now.Day);
當您嘗試設置時間爲2011年2月29日
DateTime leapDay = new DateTime(2012, 2, 29);
DateTime sameleapDayLastYear = new DateTime(leapDay.Year - 1, leapDay.Month, leapDay.Day);
雖然這將獲得當月的相同數字,但它不會像Iggy要求的那樣獲得第n個<週一,週二,週三,週四,週五,週六,日>天。 – 2010-07-24 01:37:57
是的,我誤解了他想做的事情。我的壞 – mdenomy 2010-07-25 14:18:15
如果你正在尋找你會遇到一個閏年,即下面的代碼中的問題會拋出異常對於是在一年內每月的第N特定工作日,這個代碼可以幫助:
using System;
class NthWeekDayOfMonth
{
public
NthWeekDayOfMonth(DateTime date)
{
this.date = date;
}
public
NthWeekDayOfMonth(int n, DayOfWeek weekDay, int month, int year)
{
DateTime firstDayOfMonth = new DateTime(year, month, 1);
if (weekDay < firstDayOfMonth.DayOfWeek)
{
this.date = firstDayOfMonth.AddDays((n - 1) * 7 + weekDay + 7 - firstDayOfMonth.DayOfWeek);
}
else
{
this.date = firstDayOfMonth.AddDays((n - 1) * 7 + weekDay - firstDayOfMonth.DayOfWeek);
}
}
public int
Month
{
get { return date.Month; }
}
public DayOfWeek
WeekDay
{
get { return date.DayOfWeek; }
}
public int
N
{
get { return (date.Day - 1)/7 + 1; }
}
public int
Year
{
get { return date.Year; }
}
public DateTime
Date
{
get { return date; }
}
private DateTime
date;
}
class Program
{
static void Main(string[] args)
{
for (DateTime d = new DateTime(2010, 7, 1); d <= new DateTime(2010, 7, 31); d = d.AddDays(1))
{
NthWeekDayOfMonth thisYear = new NthWeekDayOfMonth(d);
NthWeekDayOfMonth lastYear = new NthWeekDayOfMonth(thisYear.N, thisYear.WeekDay, thisYear.Month, thisYear.Year - 1);
Console.WriteLine("{0}th {1} of {2} in {3}: {4} - in {5}: {6}", thisYear.N, thisYear.WeekDay, thisYear.Month, thisYear.Year, thisYear.Date, lastYear.Year, lastYear.Date);
}
}
}
這是有益的,感謝分享 – Justin 2014-06-28 02:06:17
嗨,你能解決你的代碼? 1/6/2017 => 1/1/2016 ... 1/7/2017 => 1/2/2016 ...然後來一個巨大的SKIP 1/8/2017 => 1/10/2016(正確)。更新以查看整個2017年1月,並且您可以看到該錯誤。謝謝 – 2017-01-10 16:50:58
沒有錯誤; 「巨大的SKIP」是正確的。 2017年1月7日是2017年1月的第一個星期六。2016年1月的第一個星期六是2016年1月2日。 2017年1月8日是2017年1月的第二個星期日。2016年1月的第二個星期日是1月10日。 – GBegen 2017-03-21 23:46:09
- 1. 自動去日期當天
- 2. 當天在php中的當天日期
- 3. 如何從日期範圍獲取當年的天數?
- 4. 獲取當年最後一天的日期
- 5. 從android當前獲取過去7天的日期
- 6. 獲取當前日期和前一天
- 7. Bash Shell當前日期減去天數
- 8. 獲取從當日起至當天的年份數據
- 9. 獲取日期爲特定日期是當天的日期後
- 10. 如何獲取當前/去年的天數
- 11. 從PHP當天獲取最近7天的日期時間的日期記錄
- 12. 1992年第203天獲取日期
- 13. 如何根據當天日期獲取未來15天的日期?
- 14. 過濾當天的日期。
- 15. 入門日期的當天
- 16. 從python當前日期獲取7天前的日期
- 17. 使用xslt獲取當週的當天日期
- 18. Android - 獲取當前日期(今天)日期
- 19. 獲取日期前30天當前日期
- 20. 在30天內獲取行,當年是當前年份,月份是當前月份,日期是字符串
- 21. SQL:獲取當前日期和當前日期之間的數據+15天
- 22. 計算最近的16天當天的當前日期
- 23. 獲取當前月份和當前年份的天數
- 24. BigQuery當日期小於或等於3天減去當前日期
- 25. SQLite當前日期和過去幾年的當前日期
- 26. 獲取昨天的日期
- 27. 如果系統日期是當前日期的一年,如何在java中獲取今天的日期?
- 28. PowerPivot DAX當日期爲去年時獲取值的公式
- 29. 獲取當天的名字
- 30. 獲取當前日期的年份
那麼,第四個星期五在去年七月是一個不同的日期,這樣你就不會總是能夠回答它因爲有時會有第5個一個月的日子(今年10月的星期五)並不總是在那裏(明年10月)。 –
2010-07-24 01:22:29
另外,你將不得不處理邊緣案例的閏年... – TheCloudlessSky 2010-07-24 01:23:56
也許DateTime.Now.AddYears(-1)將不得不做... – 2010-07-24 01:30:06