Предпочитать new DateTime
.
В пользу new
, это позволит вам использовать переменные напрямую:
// clean because the variable is applied directly to the function
int year = 2000;
var date1 = new DateTime(year, 1, 15);
var date1 = new DateTime(year, 7, 3);
var date1 = new DateTime(year, 8, 19);
// kind of gross and prone to errors because it is appended to the string
int day = 23;
var date1 = DateTime.Parse("2001, 5, " + day.ToString());
В аргументе против Parse
, это не такобнаружение ошибок до времени выполнения:
var date1 = new DateTime(200fdsa, 1, 15); // Error on compile
var date2 = DateTime.Parse("2001fdsjf, 5, 25"); // Must run to find the error
DateTime.Parse
всегда будет иметь худшую производительность, поскольку ему необходимо запустить код, который обнаруживает ошибки и преобразует строку в числовые значения.Это происходит во время работы вашей программы.
Однако - в случаях, когда вы должны принять ввод строки (например, из текстового файла), вы должны использовать инструмент, созданный для задания: DateTime.Parse
.
Если вы заинтересованы в упрощении спецификации констант даты / времени в своем коде, есть библиотека, которую Джон Скит написал для этого.
Этонемного устаревший и не поддерживаемый, но конкретный код (методы расширения для целочисленных констант / структуры даты и времени), вероятно, на самом деле не требует особого обслуживания.*
Исходный код для этих расширений находится под MiscUtil\MiscUtil\Extensions\TimeRelated\
(внутри исходного zip-файла)
Это позволит вам писать ваши даты более дружелюбно, но все же даст вам чистый код спроизводительность, аналогичная new DateTime(2012, 11, 13)
:
DateTime someDateAndTime = 19.June(1976) + 8.Hours();