该System.DateTime对象具有等方法AddYears(), AddMonths(), AddDays(), AddSeconds()等.
我注意到没有AddWeeks().为什么是这样?
此外,我的要求是从52周前获得价格值.我知道这相当于1年,但他们具体约52周.
我这样做会是一样的:
yearOldPrice = _priceService.GetPriceForDate(price.Date.AddYears(-1));
Run Code Online (Sandbox Code Playgroud)
如
yearOldPrice = _priceService.GetPriceForDate(price.Date.AddDays(-7 * 52));
Run Code Online (Sandbox Code Playgroud)
我问这个假设.AddDays(-7 * 52)是一样的.AddWeeks(-52),因为一周有7天.
Ste*_*gan 27
正如你在问题中所提到的,与年和月不同,每周总共有7天(在我的日历上,无论如何),所以当你需要做的就是使用AddWeeks方法时,几乎没有什么可以获得的. AddDays(周*7).虽然你有AddMinutes和AddHours时必须质疑逻辑!该死的他们和他们的不一致!
你可以随时为.AddWeeks创建一个扩展方法,如果它真的困扰你,不过:
public static class DateTimeExtensions
{
public static DateTime AddWeeks(this DateTime dateTime, int numberOfWeeks)
{
return dateTime.AddDays(numberOfWeeks * 7);
}
}
Run Code Online (Sandbox Code Playgroud)
正如其他人所指出的,一年不是52周.
抽象Calendar类实现了您所使用的方法,您可以使用区域设置的日历,也可以创建实现它的类的对象:
DateTime dt = CultureInfo.InvariantCulture.Calendar.AddWeeks(datetime, weeks);
GregorianCalendar gc = new GregorianCalendar();
DateTime dt = gc.AddWeeks(datetime, weeks);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
15484 次 |
| 最近记录: |