2010-07-23 33 views
15

我在Windows服務中使用DateTime.Now.ToString()它給我輸出像「7/23/2010 12:35:07 PM」 我想要排除第二部分,只顯示最多分鐘。如何排除秒DateTime.ToString()

那麼如何從該格式中排除秒......?

+0

請參閱本http://www.csharp-examples.net/string-format-datetime/ – 2010-07-23 07:24:14

+0

@Amit,你能爲此標記一個答案嗎? – JohnOsborne 2018-01-22 17:43:23

回答

16

你必須在一個format string傳遞給ToString()功能:

DateTime.Now.ToString("g") 

此選項文化意識。

對於這種類型的輸出,你也可以使用一個custom format string,如果你想完全控制:

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

這將輸出完全一樣的,無論文化。

8

你可以使用一個format

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

輸出爲短日期模式:

DateTime.Now.ToString("g") 

的完整文檔見MSDN

+0

這是最好的解決方案,因爲它提供了OP在美國文化中所需的內容,但也總體上依賴於文化。 – Noldorin 2010-07-23 07:25:13

+0

這個解決方案如何滿足這個要求:「我想排除第二部分,只顯示最多分鐘。」 ? – 2016-03-03 14:37:19

+0

@JanMacháček「g」不會打印秒數,但只要文字在線程上正確設置,問題的打印日期和時間就會被詢問。 – 2016-03-03 21:15:23

-1

嘗試DateTime.Now.ToShortDateString() + " " + DateTime.Now.Hour.ToString() + ":" + DateTime.Now.Minute.ToString()

+0

這將只顯示日期部分。你也必須添加ToShortTimeString。 – 2010-07-23 07:28:27

1

請測試:

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

如果你想保持獨立的語言,你可以使用下面的代碼(也許在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'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}}" />