2014-03-06 64 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周吗? –