簡體   English   中英

如何從DateTime c#時間00:00:00獲取日期

[英]How to get date only if time is 00:00:00 from DateTime c#

我想將DateTime對象轉換為字符串。 我想要實現的是:

  1. 如果時間是00:00:00,則僅從中獲取日期。
  2. 獲取日期和時間(如果兩者都存在)。
  3. 我想使用CurrentCulture.DateTimeFormatConvert.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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM