Как исключить секунды из DateTime.ToString()

Я использую функцию DateTime.Now.ToString() в службе Windows, и она дает мне вывод вроде "7/23/2010 12:35:07 PM" Я хочу исключить вторую часть, отображающую только минуту.

Итак, как исключить секунды из этого формата...?

Ответы

Ответ 1

Выведите его как короткий шаблон даты:

DateTime.Now.ToString("g")

См. MSDN для полной документации.

Ответ 2

Вам нужно передать строку формата в функцию ToString():

DateTime.Now.ToString("g")

Этот параметр поддерживает культуру.

Для такого вывода вы также можете использовать строку настраиваемого формата, если вы хотите полный контроль:

DateTime.Now.ToString("MM/dd/yyyy hh:mm")

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

Ответ 3

Вы можете использовать формат:

DateTime.Now.ToString("MM/dd/yyyy hh:mm tt");

Ответ 4

пожалуйста, проверьте:

DateTime.Now.ToString("MM/dd/yyyy hh:mm");

Ответ 6

Если вы хотите оставаться независимым от языка, вы можете использовать следующий код (возможно, в 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}}" />

Ответ 7

Попробуйте DateTime.Now.ToShortDateString() + " " + DateTime.Now.Hour.ToString() + ":" + DateTime.Now.Minute.ToString()