[英]How to get date only if time is 00:00:00 from DateTime c#
我想將DateTime對象轉換為字符串。 我想要實現的是:
CurrentCulture.DateTimeFormat
和Convert.ToString(DateTime, IFormatProvider)
實現這一點,否則我知道如何使用.ToString()
擴展方法。 我試過以下事情:
Thread.CurrentPrincipal = principal;
CultureInfo culture = (CultureInfo)CultureInfo.CurrentCulture.Clone();
culture.DateTimeFormat.ShortDatePattern = MPAResource.DateFormat;
culture.DateTimeFormat.LongTimePattern = "hh:mm:ss tt";
culture.DateTimeFormat.ShortTimePattern = "hh:mm:ss tt";
culture.DateTimeFormat.FullDateTimePattern = MPAResource.DateTimeFormat;
Thread.CurrentThread.CurrentCulture = culture;
然后:
string x = Convert.ToString(x.ExpectedJoiningDate, CultureInfo.CurrentCulture);
輸出時間為09-Oct-2015 11:00 AM
。 我想要09-Oct-2015 11:00 AM
如果有時間和09-Oct-2015
如果時間不存在的話。
但即使時間與日期一致,上面的行也只給我日期。
在我看來這很簡單:
var dt = x.ExpectedJoiningDate;
string x = (dt.TimeOfDay == TimeSpan.Zero)?dt.ToShortDateString():dt.ToString();
PS:如果您願意,可以在ToString中使用culture作為參數。 有關如何執行此操作的詳細信息,請參閱https://msdn.microsoft.com/en-us/library/aa326720(v=vs.71).aspx 。
蒂姆說這個OP想要使用Convert.ToString
。 它沒有計算,所以我拒絕。 為什么不計算? 這是Convert.ToString
的代碼:
public static string ToString(DateTime value, IFormatProvider provider)
{
return value.ToString(provider);
}
是的人,這基本上是一樣的。
也就是說,如果你很頑固,我想你可以在你自己的小類中實現IFormatProvider
,根據條件更改格式提供者,然后傳遞它而不是默認格式提供者。 然后,恭喜,您已經創建了許多無意義的代碼,使用Convert.ToString
提供完全相同的結果。
過了一會兒為自己寫了一個方法。
public static string ConvertToMyDateTimeFormat(Nullable<DateTime> value, CultureInfo IFormateProvider)
{
if (value.HasValue)
{
if (value.Value.TimeOfDay.Ticks > 0)
{
return value.Value.ToString(IFormateProvider);
}
else
{
return value.Value.ToString(IFormateProvider.DateTimeFormat.ShortDatePattern);
}
}
else
{
return string.Empty;
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.