回答
这就是我使用(可能不是国际化):
DateTime input = //...
int delta = DayOfWeek.Monday - input.DayOfWeek;
DateTime monday = input.AddDays(delta);
是的,确实如此:没有国际化。星期一并不总是一周的第一天。 – 2009-11-03 07:58:10
您可以使用以下方法获取每周的第一天:CultureInfo.CurrentCulture.DateTimeFormat.FirstDayOfWeek – 2009-11-03 08:03:33
实际上,根据文化的一周的第一天在这种情况下没有兴趣; OP需要一周的星期一,而不是一周的第一天。 – 2009-11-03 08:28:35
像这样的工作
DateTime dt = DateTime.Now;
while(dt.DayOfWeek != DayOfWeek.Monday) dt = dt.AddDays(-1);
我敢肯定有一个更好的方式tho :)
试试这个:
public DateTime FirstDayOfWeek(DateTime date)
{
var candidateDate=date;
while(candidateDate.DayOfWeek!=DayOfWeek.Monday) {
candidateDate=candidateDate.AddDays(-1);
}
return candidateDate;
}
编辑的完整性:超载今天的日期:
public DateTime FirstDayOfCurrentWeek()
{
return FirstDayOfWeek(DateTime.Today);
}
为什么循环??,有办法做到这一点没有循环。见下面的答案 – 2009-11-03 07:59:29
的Pondium答案可以在某些情况下向前搜索。如果你想只向后搜索我觉得应该是:
DateTime input = //...
int delta = DayOfWeek.Monday - input.DayOfWeek;
if(delta > 0)
delta -= 7;
DateTime monday = input.AddDays(delta);
这应该是正确的答案,因为它处理星期日,即FirstDayOfWeek是星期一,所以如果星期日是输入日期,它应该返回星期一之前,接受的答案不会。 – 2014-04-24 13:51:09
+1如果'输入'是2017年1月1日(星期日),则此代码将在本周的第一天给出26/12/2016!不是2/1/2017(接受的答案给出!) – 2016-08-26 08:59:28
它也适用于01/01/2019 = 31/12/2018! – 2016-08-26 09:12:29
var now = System.DateTime.Now;
var result = now.AddDays(-((now.DayOfWeek - System.Threading.Thread.CurrentThread.CurrentCulture.DateTimeFormat.FirstDayOfWeek + 7) % 7)).Date;
可能会回到你星期一。除非你使用周一不是一周的第一天的文化。
什么:
CultureInfo.CurrentCulture.DateTimeFormat.FirstDayOfWeek
为什么不使用本地的解决方案?
问题是要得到具体的日期(即2015-11-20)而不是将哪一天定义为第一天。 – 2015-11-20 18:11:52
public static class DateTimeExtension
{
public static DateTime GetFirstDayOfWeek(this DateTime date)
{
var firstDayOfWeek = CultureInfo.CurrentCulture.DateTimeFormat.FirstDayOfWeek;
while (date.DayOfWeek != firstDayOfWeek)
{
date = date.AddDays(-1);
}
return date;
}
}
国际在这里。我认为作为扩展它可以更有用。
- 1. 本周星期一日期
- 2. 在SQL中获取本周的星期一的完整日期?
- 3. 获取本周的第一个/最后一个日期
- 4. 获取本周的每个星期一和过去8周的日期?
- 5. 如何获取当年第一个星期一的日期(php)?
- 6. osx星期一日期本周bash
- 7. Java - 获取星期一的一周的日期在那一周给出一个日期
- 8. 如何使用星期编号获取一周的星期一日期
- 9. 使用周在MySql中获取本周的第一个星期第
- 10. C#获取下一个第N个星期五日期从今天的日期
- 11. 试图获取当周的星期一的日期
- 12. 开始星期日的第一周的星期几,星期六的星期的最后一天结束
- 13. 如果周六或周日落在星期一或星期日
- 14. 获取基于给定日期的星期一至星期日
- 15. 从Python的日期列获取周开始日期(星期日)
- 16. 获取从给定日期星期一到星期五的星期日期
- 17. SQL Server:获取一个月的第一周和第二周的日期范围
- 18. Informatica - 获取星期一的日期号
- 19. 获取每周的第一个星期 - SQL
- 20. 在PHP中找出第n周的星期一的日期?
- 21. 获取日期2星期一前
- 22. 从当前日期获取星期几,并指定星期的第一天
- 23. 查找本周星期一
- 24. 获取本周的周一和周五的日期(PHP)
- 25. 获取给定日期的周数(周从星期天开始)
- 26. strtotime认为“下个月的第一个星期日”=星期三?
- 27. 如何获得SAS中的前一个星期一(前一周的星期一)?
- 28. 获取其中的几个星期开始从第一个星期一PHP
- 29. 获取一个月的每个第二个星期二的日期
- 30. 在SQL中使用今天的日期获取星期日期(星期一)
看看这个问题:http://stackoverflow.com/questions/38039/how-can-i-get-the-datetime-for-the-start-of-the-week – 2009-11-03 07:53:33