В году 52,17 недели.Как рассчитать текущую неделю в C #? - PullRequest
0 голосов
/ 06 декабря 2011

Я сохраняю данные в циклическом журнале с обозначенными кратными байтами (dataSlots), и я рассчитываю номер недели, основываясь на днях, которые проходят от контрольной даты.

 DateTime startDate = DateTime.UtcNow;
 for (int ii = 0; ii < 900; ii++)
 {
    currentDate = startDate + new TimeSpan(7 * ii, 1, 1, 1, 1)
    DateTime globalStartReference = new DateTime(2011, 12, 1, 0, 0, 0, DateTimeKind.Utc);
    var span = currentDate - globalStartReference ;
    int dataSlot = 0;
    dataSlot = (span.Days * 7) / 52;
    Console.WriteLine(dataSlot);
 }

Я надеюсь, что dataSlot будет постоянно увеличиваться, основываясь на текущей неделе, однако это не так. Я получаю повторяющиеся записи (и, следовательно, перезаписываю свои данные) в эти недели

11
28
44
60
77
88
109

Почему я получаю дубликаты недель и как мне это учитывать? Я предполагаю, что в году есть дробное число недель ...

Ответы [ 3 ]

5 голосов
/ 06 декабря 2011

Может пригодиться Calendar.GetWeekOfYear метод . Он не допускает произвольную контрольную дату, однако вы можете настроить ее самостоятельно.

1 голос
/ 06 декабря 2011

Пытаетесь ли вы получить текущую неделю для данного года?Похоже, с некоторой предопределенной даты начала до бесконечности.Используя соответствующий календарь и методы его получения, вы можете получить определенную неделю года на основе определенной даты, но не x недель с любой произвольной даты.

Кроме того, вам необходимо учитывать високосные годы, частичныенедели и т. д.

0 голосов
/ 06 декабря 2011

Если вы просто беспокоитесь о неделях от базовой линии, годы не входят в это - это всего лишь 7-дневные приращения.

В противном случае у вас есть год и неделя года; Ответ @ Бэкона, вероятно, правильный для этого. Вы получите некоторое совпадение - Y2W1 может использовать ту же календарную неделю, что и Y1W52. Не знаю, если вы просто добавите и сделаете ту неделю 53, но это будет проблематично, чем дольше вы идете.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...