2014-08-27 71 views
5

新的一天,我有一個分析在某網站的用戶的行爲守則,它使用了很多的DateTime功能。現在,我想從3:00 am開始新的一天,而不是12:00 am,因爲它在默認情況下,但我真的不想更改代碼的任何其他部分。日期時間開始於凌晨3:00

例如:假設我有一個DateTime2014-08-27t02:59:00和我做的AddMinutes(2),日期應該更改爲2014-08-28t03:01:00

是否有設置「新日開始」不更改其他功能的任何方法?

+0

我懷疑它是可行的使用.NET中已有的東西。只是爲了好玩,試試這個思想實驗吧。假設您有一個DateTime實例表示(讓我們忽略時區)2014-08-27T02:59:00。然後你打電話給AddMinutes(2)。是因爲你的電話號碼2014-08-27T03:01:00(因爲你加了兩分鐘),還是2014-08-28T03:01:00(因爲你越過了「換日期」)的返回值?你可以將DateTime包裝在其他東西中,並將它變成對你有用的東西,但你需要定義這樣的東西。 – 2014-08-27 09:38:35

+0

如果有可能,你可能會每天失去3個小時。你的問題可以接受嗎?你每天會失去3個小時是否重要? – Shadow 2014-08-27 10:09:38

+0

的想法是,每一天仍然是24小時,但它會從凌晨3點開始,例如如果我有日期時間2014-08-27T02:59:00並且比我做AddMinutes(2),日期將會更改爲2014-08-28T03:01:00。 – 2014-08-27 10:28:43

回答

1

對於BCL日期沒有處理,我做了一個通過NodaTime的文檔閱讀,不能有發現什麼爲好。

不知道到很多關於你的代碼是如何工作的,現在我建議你去與下列任一想法;創建一個擴展方法來獲取「正確」日期(在您的模型中)或爲您的目的創建一個新的日期類。

拓方法:

​​

或者創建自己的類型,MyDateTime,其工作方式你想讓它的方式。確切地說,你需要的東西我不知道,但讓所有的「正常」DateTime方法工作需要相當多的工作。

1

使用custom timezone

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計算的一切。但是你使用新的時區顯示。

相關問題