簡體   English   中英

DateTime轉換為Date,然后返回C#中的DateTime

[英]DateTime convert to Date and then back to DateTime in C#

我使用它將DateTime值轉換為Date,然后我添加00:00:00和23:59:59以確保在計算內容時考慮整天。 我很確定這是做錯事的方式。 什么是正確的方法?

        DateTime varObliczOd = DateTime.Parse(dateTimeWycenaPortfelaObliczDataOd.Value.ToShortDateString() + " 00:00:00");
        DateTime varObliczDo = DateTime.Parse(dateTimeWycenaPortfelaObliczDataDo.Value.ToShortDateString() + " 23:59:59");

如果dateTimeWycenaPortfelaObliczDataOd的類型為DateTime ,您可以使用:

dateTimeWycenaPortfelaObliczDataOd.Date

只獲取日期部分(時間將是00:00:00 ...)。 如果您想獲得日期的最后一個刻度,您可以使用:

dateTimeWycenaPortfelaObliczDataOd.Date.AddDays(1).AddTicks(-1)

但你真的更適合下一個日期(.AddDays(1))。

在任何情況下,都不需要轉換為字符串並返回DateTime。

DateTime對象具有Date屬性,這可能是您需要的。

您可以在DateTime對象上使用以下屬性/方法來獲取值:

DateTime varObliczOd = dateTimeWycenaPortfelaObliczDataOd.Date;
DateTime varObliczDo = dateTimeWycenaPortfelaObliczDataOd.AddDayes(1).AddTicks(-1);

知道你為什么需要它會有所幫助,但這會有用。

DateTime varObliczOd = dateTimeWycenaPortfelaObliczDataOd.Date;
DateTime varObliczDo = varObliczOd.AddDays(1).AddSeconds(-1);

使用Date屬性,然后直接操作它們來創建所需的時間組件 - 無需費心解析和轉換。

您可以使用DateTime對象的Date屬性來完成您的需要。

DateTime varObliczOd = dateTimeWycenaPortfelaObliczDataOd.Value.Date;
DateTime varObliczDo = dateTimeWycenaPortfelaObliczDataDo.Value.Date.AddDays(1);

如果你真的希望它在23:59:59結束,你可以這樣做:

DateTime varObliczDo = dateTimeWycenaPortfelaObliczDataDo.Value.Date.AddDays(1).AddSeconds(-1);

將varObliczDo設置為您的結束日期,沒有時間加上一天(午夜)。 因此,如果dateTimeWycenaPortfelaObliczDataDo2010-03-05 16:12:12 ,現在將是2010-03-06 00:00:00

這樣的事可能嗎? 我從頭腦中輸入了這個,代碼中可能存在一些錯誤。

DateTime varObliczOd = dateTimeWycenaPortfelaObliczDataOd.AddSeconds(-dateTimeWycenaPortfelaObliczDataOd.Seconds).AddMinutes(-dateTimeWycenaPortfelaObliczDataOd.Minutes).AddHours(-dateTimeWycenaPortfelaObliczDataOd.Hours);

DateTime varObliczDo  = new DateTime(dateTimeWycenaPortfelaObliczDataDo.Year, dateTimeWycenaPortfelaObliczDataDo.Month, dateTimeWycenaPortfelaObliczDataDoDay, 23, 59, 59);

DateTime newDate = new DateTime(oldDate.Year,oldDate.Month,oldDate.Day,23,59,59)DateTime newDate = new DateTime(oldDate.Year,oldDate.Month,oldDate.Day,0,0,0)

您可以使用TimeSpan:

DateTime varObliczOd = dateTimeWycenaPortfelaObliczDataOd - new TimeSpan(dateTimeWycenaPortfelaObliczDataOd.Hours, dateTimeWycenaPortfelaObliczDataOd.Minutes, dateTimeWycenaPortfelaObliczDataOd.Seconds);

就像那樣,你至少可以避免解析,這可能會失敗,具體取決於本地文化設置。

暫無
暫無

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

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