2014-03-06 130 views
-2

正如標題所述,我需要將數週和數年轉換爲1970年以來的毫秒。在.Net中執行此操作的最佳方法是什麼? 我只有一些事件發生的周和年的信息。星期一的星星。我認爲DateTime並不是答案,因爲它無法處理一年中的那一週。 我需要的東西就像一個方法雙重getMili(int week, int year)。 還是要謝謝你將周和年轉換爲毫秒

+0

開始你跟隨。 – Jon

回答

6

你可以把它像:通過指定你有興趣,也該定義的「一年中的週數」,這毫秒本週

// Let's convert 15th Monday in 2014 
    int MondaysNumber = 15; 

    DateTime source = new DateTime(2014, 1, 1); 

    int delta = 7 + DayOfWeek.Monday - source.DayOfWeek; 

    if (delta >= 7) 
    delta -= 7; 

    source = source.AddDays((MondaysNumber - 1) * 7 + delta); 

    // Finally, convert it into milliseconds 
    Double result = (source - new DateTime(1970, 1, 1)).TotalMilliseconds; 
+0

很好的答案。如果他使用ISO星期系統,以'week == 15'和'year == 2014'爲例,最好找到一年中的第15個星期四**,因爲星期四是ISO星期以及確定一月一週不屬於星期一的情況下每週屬於哪一年的那一天。因此,週四找到第15天,然後減去3天以獲得期望的星期一。 –

+0

@JoãoMartins爲了檢查,我們今天有星期四,2014年3月6日星期四?因爲今天是今年的第十個星期四,但是本週從今年的第九個星期一開始。你使用ISO 8601周嗎? –