Ответ 1
Выведите его как короткий шаблон даты:
DateTime.Now.ToString("g")
См. MSDN для полной документации.
Я использую функцию DateTime.Now.ToString() в службе Windows, и она дает мне вывод вроде "7/23/2010 12:35:07 PM" Я хочу исключить вторую часть, отображающую только минуту.
Итак, как исключить секунды из этого формата...?
Выведите его как короткий шаблон даты:
DateTime.Now.ToString("g")
См. MSDN для полной документации.
Вам нужно передать строку формата в функцию ToString()
:
DateTime.Now.ToString("g")
Этот параметр поддерживает культуру.
Для такого вывода вы также можете использовать строку настраиваемого формата, если вы хотите полный контроль:
DateTime.Now.ToString("MM/dd/yyyy hh:mm")
Это будет выводиться точно так же, независимо от культуры.
Вы можете использовать формат:
DateTime.Now.ToString("MM/dd/yyyy hh:mm tt");
пожалуйста, проверьте:
DateTime.Now.ToString("MM/dd/yyyy hh:mm");
Возможно, вы захотите сделать что-то вроде DateTime.Now.ToString("M/d/yyyy hh:mm");
для дополнительной информации смотрите Пользовательские строки формата даты и времени
Если вы хотите оставаться независимым от языка, вы можете использовать следующий код (возможно, в IValueConverter (см. второй фрагмент кода)), чтобы удалите только часть секунд из строки:
int index = dateTimeString.LastIndexOf(':');
if (index > -1) {
dateTimeString = dateTimeString.Remove(index, 3);
}
Здесь выполняется реализация преобразователя.
[ValueConversion(typeof(DateTime), typeof(string))]
public class DateTimeToStringConverter : Markup.MarkupExtension, IValueConverter {
public DateTimeToStringConverter() : base() {
DisplayStyle = Kind.DateAndTime;
DisplaySeconds = true;
}
#region IValueConverter
public object Convert(object value, Type targetType, object parameter, Globalization.CultureInfo culture) {
if (value == null) return string.Empty;
if (!value is DateTime) throw new ArgumentException("The value type has to be DateTime.", "value");
DateTime dateTime = (DateTime)value;
string returnValue = string.Empty;
switch (DisplayStyle) {
case Kind.Date:
returnValue = dateTime.ToShortDateString();
break;
case Kind.Time:
returnValue = dateTime.ToLongTimeString();
break;
case Kind.DateAndTime:
returnValue = dateTime.ToString();
break;
}
if (!DisplaySeconds) {
int index = returnValue.LastIndexOf(':');
if (index > -1) {
returnValue = returnValue.Remove(index, 3);
}
}
return returnValue;
}
public object ConvertBack(object value, Type targetType, object parameter, Globalization.CultureInfo culture) {
throw new NotSupportedException();
}
#endregion
public override object ProvideValue(IServiceProvider serviceProvider) {
return this;
}
#region Properties
public Kind DisplayStyle { get; set; }
public bool DisplaySeconds { get; set; }
#endregion
public enum Kind {
Date,
Time,
DateAndTime
}
}
Вы также можете использовать его в XAML в качестве расширения разметки:
<TextBlock Text="{Binding CreationTimestamp, Converter={local:DateTimeToStringConverter DisplayStyle=DateAndTime, DisplaySeconds=False}}" />
Попробуйте DateTime.Now.ToShortDateString() + " " + DateTime.Now.Hour.ToString() + ":" + DateTime.Now.Minute.ToString()