2016-12-01 3 views
0

я сейчас делаю некоторые проверки кода и заметил, что следующая строка используется thorought системы:Можно указать формат дат вместо ToString («г»)

userDOB.ToString("g") --Outputs 15/12/2000 13:45 

Мой вопрос с это волшебная строка («g»).

Я не думаю/не могу найти, что объект datetime имеет равную функцию, например. ToShortDateString() (если бы это было так, я нашел бы это более удобочитаемым).

Есть функция в объекте datetime, который выводится в этом формате? Или мне нужно создать собственный метод расширения или перейти по другому пути?

+1

Является ли вывод, что вы хотите - просто, не используя строку «г», а с помощью метода или какая-то другая конструкция, которая лучше читает код? –

+0

'.ToString (" g ")' генерирует 'дату' с использованием комбинированных спецификаторов 'd' (короткая дата) и' t' (короткое время). Существует не метод расширения DateTime, который делает это, поэтому вам нужно будет создать собственный метод расширения –

+1

'ToShortDateString()' так же хорош, как и 'userDOB.ToString (" d ")'. Просто немногие форматы даты и времени с большей вероятностью будут использоваться, поэтому команда .Net также предоставила некоторые дополнительные API. Я не уверен, почему вы думаете, что 'userDOB.ToString (« g »)' менее читабельны, и вы хотите заменить его некоторым методом расширения, который не имеет параметра. Моя идея заключалась в том, что API-интерфейсы являются тем, чем они являются. Как разработчик при чтении кода каждый раз, когда мне придется идти внутрь вашего метода расширения, чтобы понять, что он возвращает под капотом. – RBT

ответ

1

Я думаю, что вы можете искать следующее:

userDOB.ToString("dd/MM/yyyy HH:mm") 
+0

Это 0: есть не так. Должно быть два H тоже. – itsme86

+0

@ itsme86 Два Hs, только если он хочет вести 0 на 1 цифру раз – BradleyDotNET

+1

Это неправильно. В приведенном примере первый день (15). –

1

Можно указать формат даты вместо использования ToString («г «)?

Вот один из возможных ответов. Он преобразует времени в следующем формате:

день/месяц/год часы: минуты

var dateTime = DateTime.Now.ToString("dd/MM/yyyy HH:mm"); 

Есть функция на объект даты и времени, который выводит в этом формате?

Существуют аналогичные методы, такие как ToShortDateString(), но он по-прежнему не такой же, как вы описали.

Должен ли я создать собственный метод расширения или спуститься по другому пути ?

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

var dateTime = DateTime.Now.ToString(_someMoreDescriptiveDateTimeFormat); 

Может быть хорошей идеей для метода метод расширения может быть таким:

 var dateTimeString = DateTime.Now.ToFormattedString(); 

А вот реализация метода, который документируется с пояснительными данными. Это также может быть полезно при просмотре.

 /// <summary> 
     /// Convert DateTime object into specially formated string. 
     /// </summary> 
     /// <param name="dateTime">DateTime which will be converted. </param> 
     /// <returns>Custom date and time string.</returns> 
     public static string ToFormattedString(this DateTime dateTime) 
     { 
      return dateTime.ToString("dd/MM/yyyy HH:mm"); 
     } 
0

это, как она работает

String.Format("{0:d/M/yyyy HH:mm:ss}", userDOB); 

выход образец

// "9/3/2008 16:05:07" - english (en-US) 
Смежные вопросы