我在Windows服务中使用DateTime.Now.ToString(),它给我输出像“7/23/2010 12:35:07 PM” 我想排除第二部分,只显示最多一分钟。
那么如何从该格式中排除秒数??
答案 0 :(得分:39)
答案 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()