我有一个分析某个网站上用户行为的代码,它使用了许多DateTime功能.现在,我想开始新的一天,3:00 am而不是12:00 am默认情况下,但我真的不想改变代码的任何其他部分.
例如:说我DateTime喜欢2014-08-27t02:59:00和我一样AddMinutes(2),日期应该改为2014-08-28t03:01:00.
有没有办法在不改变其他功能的情况下设置"新的开始"?
对于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;
}
}
Run Code Online (Sandbox Code Playgroud)
或者创建您自己的类型,MyDateTime它按照您想要的方式工作。我不知道你到底需要什么,但是让所有“正常”DateTime方法正常工作需要大量的工作。