簡體   English   中英

在 DateTime object 中刪除小時:秒:毫秒

[英]Remove hours:seconds:milliseconds in DateTime object

我正在嘗試從 DateTime object 創建一個字符串,它產生格式mm:dd:yyyy

按照慣例, DateTime時間 object 作為mm:dd:yyyy hrs:min:sec AM/PM出現。

有沒有辦法快速刪除 DateTime 的hrs:min:sec AM/PM部分,這樣當我將它轉換為ToString()時,它只會導致mm:dd:yyyy

要回答您的問題,不-您必須將其存儲為其他類型。 最簡單的選擇是使用字符串。

string date = dateTime.ToString("MM:dd:yyyy");

但是,我也強烈建議不要將日期內部存儲為字符串形式的程序。 這將使得很難對其進行任何計算或比較。 此外,我建議您不要對日期表示法強加特定的文化,因為這意味着您的應用程序可能無法在您所期望的其他文化中正常工作。

稍微復雜一點的方法是創建一個覆蓋ToString的自定義類。 不過,我也要避免這種情況,因為使用標准庫函數仍然很難使用您的類型。 您將不得不一直來回轉換。

只需將其保留為DateTime並僅在表示層中將其轉換為字符串即可。 您可以使用DateTime.ToShortDateString來打印用戶友好的可DateTime.ToShortDateString文化的字符串。

datetime DateWithTimeNoSeconds = 
DateTime.Now.Date.AddHours(DateTime.Now.Hour).AddMinutes(DateTime.Now.Minute);

這將獲取當前日期和時間的日期,並增加小時和分鍾。

DateTime date1 = new DateTime(2008, 6, 1, 7, 47, 0);
Console.WriteLine(date1.ToString());

// Get date-only portion of date, without its time.
DateTime dateOnly = date1.Date;
// Display date using short date string.
Console.WriteLine(dateOnly.ToString("d"));
// Display date using 24-hour clock.
Console.WriteLine(dateOnly.ToString("g"));
Console.WriteLine(dateOnly.ToString("MM/dd/yyyy HH:mm"));   
// The example displays the following output to the console:
//       6/1/2008 7:47:00 AM
//       6/1/2008
//       6/1/2008 12:00 AM
//       06/01/2008 00:00

http://msdn.microsoft.com/zh-CN/library/system.datetime.date.aspx

在大多數情況下,我與馬克·拜爾斯(Mark Byers)意見相同,但我遇到的情況是,我需要存儲一個只能精確到小時的日期時間。 存儲分鍾和秒不僅是多余的,而且是不准確的。 用戶只需選擇日期和小時,因此當用戶選擇日期和小時時,分鍾和秒將設置為當前時間。

在這種情況下,刪除分鍾和秒鍾非常容易。 這是代碼:

scheduledDate = scheduledDate.AddMinutes(
    scheduledDate.Minute * -1).AddSeconds(
    scheduledDate.Second * -1);

然后,將其作為完整的日期時間存儲在數據庫中,分鍾和秒始終為0。

通常,我使用DateTime.ToShortDateString()以可識別Culture方式轉換為字符串。

這樣,您就可以按照迄今為止設置為當前線程的區域性的當前格式設置其日期格式。

如果要從DateTime對象中刪除小時,秒,毫秒(將其重置為0刪除),而不轉換為字符串,則可以使用Date屬性。

// Get date-only portion of date, without its time.
var date = DateTime.Now.Date;

下面的示例使用Date屬性提取其時間分量設置為零(或0:00:00或午夜)的DateTime值的日期分量。

msdn

您可以使用:

var newDate = new DateTime(oldDate.Year, oldDate.Month, oldDate.Day, 0, 0, 0);

關於DateTime.AddMinutes (或秒或小時),如果您想刪除而不是添加,只需添加一個負數即可!

簡單的方法,可能不是最好的方法,但是

DateTime dt = new DateTime();
dt = DateTime.Now;
string sdate = dt.ToShortDateString();
dt = DateTime.Parse(sdate);

或簡稱

var dt = DateTime.Parse(DateTime.Now.ToShortDateString());

諸如此類的日期和時間,沒有秒:

private DateTime _startTime;
public DateTime StartTime 
{ 
    get { return _startTime; } 
    set 
    { 
        _startTime = value.AddSeconds(-value.Second)
                          .AddMilliseconds(-value.Millisecond);   
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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