我有一个分析某个网站上用户行为的代码,它使用了许多DateTime
个功能。现在,我希望从3:00 am
而不是12:00 am
开始新的一天,因为它是默认设置,但我真的不想更改代码的任何其他部分。
例如:说我有DateTime
2014-08-27t02:59:00
而不是AddMinutes(2)
,日期应更改为2014-08-28t03:01:00
。
是否有任何方法可以设置"新的开始日期"没有改变其他功能?
答案 0 :(得分:1)
var displayName = "(GMT+03:00) Custom/Maxim Dunavicher Time";
var standardName = "Maxim Dunavicher Time";
var offset = new TimeSpan(03, 00, 00);
var tz = TimeZoneInfo.CreateCustomTimeZone(
standardName, offset, displayName, standardName);
您使用UTC计算所有内容。但是您使用新的时区显示。
答案 1 :(得分:1)
对于BCL
日期处理否,我阅读了NodaTime的文档并且也找不到任何内容。
我不建议您现在的代码如何运作,我建议您使用以下任何一种方法;创建一个扩展方法来获得"正确"日期(在您的模型中)或为您的目的创建一个新的日期类。
拓方法:
public static class DateTimeExtension
{
public static DateTime GetDay(this DateTime date)
{
return date.TimeOfDay > TimeSpan.FromHours(3) ? date.Date : date.AddDays(-1).Date;
}
}
或者创建自己的类型MyDateTime
,它按照您希望的方式工作。正是你需要的我不知道,但得到所有"正常" DateTime
方法工作需要相当多的工作。