значение datetime.AddDays против календаря.AddDays


В чем разница между DateTime.AddDays и Calendar.AddDays?
Является ли DateTime тип календаря независимым?

4 4

4 ответа:

Дата-Время.AddDays просто преобразует дни в ТИКи и добавляет Это количество тиков к дате и времени. Реализация календаря по умолчанию.AddDays делает то же самое. Однако, поскольку это виртуальный метод, он может быть реализован в конкретном календаре более сложным способом, например, как здесь: http://codeblog.jonskeet.uk/2010/12/01/the-joys-of-date-time-arithmetic/

Я считаю, что DateTime трудно использовать Григорианский календарь, эффективно.

Например, если вы посмотрите на DateTime.DaysInMonth он предполагает, что есть 12 месяцев, в то время как HebrewCalendar поддержка 13.

EDIT: есть некоторые аспекты DateTime, которые делают приспособленными к другим календарям, таким как этот конструктор. Однако я считаю, что он просто преобразует его в Григорианский календарь:

Calendar calendar = new HebrewCalendar();
DateTime dt = new DateTime(5901, 13, 1, 0, 0, 0, calendar); // Uses month 13!
Console.WriteLine(dt.Year); // 2141
Console.WriteLine(dt.Month); // 9

Насколько мне известно, метод Calendar.AddDays возвращает объект DateTime и вызывает его функцию.

Ответ на этот вопрос чрезвычайно прост. Между этими двумя функциями нет никакой разницы.

Календарь.AddDays также является DateTime

DateTime не расширяет эту конкретную функциональность, единственное, что он использует, - это UTC и местное время. Следует также предположить, что календарь не является объектом DateTime, он может вести себя по-разному, и, по-видимому, не предоставляет метод для получения текущего системного времени.

Править-I первоначально думали, что вы говорите о веб-элементе управления, это, по-видимому, глобализация, чтобы позволить вам отображать текущую дату и время для данной пользовательской базы делают их объявленные настройки операционной системы.