Функция Oracle to_char (дата, «IW») в .net

#.net #oracle #datetime

#.net #Oracle #дата и время

Вопрос:

Что такое .net-эквивалент функции Oracle to_char (дата, «IW») (возвращает номер недели). Я попытался использовать CultureInfo.CurrentCulture.Календарь.Получить weekOfYear(дата, правило календарной недели.Первая полная неделя, день недели.Понедельник) но некоторые результаты не совпадают. Не совсем уверен, какие значения я должен передать для перечислений CalendarWeekRule и DayOfWeek.

Ответ №1:

Похоже, что Oracle использует определение ISO-8601 для «недели года», которое не совсем поддерживается .NET из коробки. Однако в этом сообщении в блоге приведен некоторый альтернативный код, который вы могли бы использовать для его подделки.

Кроме того, мне было бы интересно узнать, дает ли мой проект Noda Time правильные результаты (вы всегда можете использовать это вместо DateTime 🙂 — если вы можете предоставить некоторые примеры ввода, вывода Oracle и вывода .NET (особенно там, где они отличаются), которые были бы полезны для меня.

Комментарии:

1. Спасибо, Джон. Мой набор данных содержал 2191 день (дни с 2006 по конец 2011 года). Я использовал функцию TO_CHAR (дата, ‘IW’) в Oracle и CultureInfo.CurrentCulture. Календарь. Получить weekOfYear(из, CalendarWeekRule. Первая полная неделя, день недели. Понедельник) в .Net. Вот ссылка на строки, которые не совпадали: notepad.cc/share/U6ZetqDI6N . Например, 8 января 2008 года, oracle выводит значение 2, тогда как .net с заданными аргументами выводит 1.

2. @Fikre: Большое спасибо за это — я проверил конец / начало года для этих дат по времени Noda, и все они соответствуют Oracle: code.google.com/p/noda-time/source /…