如何从DateTime.ToString()中排除秒

时间:2010-07-23 07:21:15

标签: c#

我在Windows服务中使用DateTime.Now.ToString(),它给我输出像“7/23/2010 12:35:07 PM” 我想排除第二部分,只显示最多一分钟。

那么如何从该格式中排除秒数??

7 个答案:

答案 0 :(得分:39)

将其输出为短日期模式:

DateTime.Now.ToString("g")

有关完整文档,请参阅MSDN

答案 1 :(得分:17)

您需要将format string传递给ToString()函数:

DateTime.Now.ToString("g")

此选项具有文化意识。

对于这种输出,如果你想要完全控制,你也可以使用custom format string

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

无论文化如何,这都将完全相同。

答案 2 :(得分:8)

您可以使用format

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

答案 3 :(得分:1)

请测试:

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

答案 4 :(得分:0)

您可能想要执行DateTime.Now.ToString("M/d/yyyy hh:mm");

之类的操作

有关详细信息,请查看Custom Date and Time Format Strings

答案 5 :(得分:0)

如果您希望保持语言独立,可以使用以下代码(可能在{{3}}中(请参阅第二个代码段))仅从字符串中删除秒部分:

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's 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}}" />

答案 6 :(得分:-1)

尝试DateTime.Now.ToShortDateString() + " " + DateTime.Now.Hour.ToString() + ":" + DateTime.Now.Minute.ToString()