我有来自数据库的DateTime字段,例如:2013-06-18 17:00:00.000
从这个值我需要添加+ 1天,并将小时设置为08:00:00
因此,在这种情况下,新值将为2013-06-19 08:00:00.000
这意味着新的日期值从第8天开始,从第二天开始。
我知道C#中的AddHours(...)
方法DateTime
,但我不知道在这种情况下它可能会有什么帮助。
答案 0 :(得分:7)
var dateTime = DateTime.Now; //example date
dateTime.AddDays(1).Date.AddHours(8)
答案 1 :(得分:1)
您可以按构造函数覆盖实例化DateTime
对象
public DateTime(int year, int month, int day, int hour, int minute, int second);
像这样:
string dbDate = "2013-06-18 17:00:00.000";
DateTime inputDate = DateTime.Parse(dbDate).AddDays(1);
DateTime toReturnDate = new DateTime(inputDate.Year, inputDate.Month, inputDate.Day, 8, 0, 0);
答案 2 :(得分:1)
您可以将TimeSpan对象添加到DateTime对象以获取新的DateTimes:
var dt = new DateTime(2013, 06, 13, 17, 55, 54); //17:55:54 at june 13, 2013
var tomorrow8am = dt.Date + // Take only date segment, omitting hours
TimeSpan.FromDays(1) + // Add 1 day
new TimeSpan(8, 0, 0); // Add the hour segment`
请注意,DateTime对象是不可变的,您不能设置任何属性。您只能使用上述方法或类似方法创建具有所需属性的新实例。
答案 3 :(得分:0)
var dateDb = new DateTime(2013,6,1, 17,0,0); // date from database
var date1 = new DateTime(dateDb.Year, dateDb.Month, dateDb.Day)
.AddHours(24)
.AddHours(8); // this is what you need :-)
答案 4 :(得分:0)
我认为应该这样做,假设一个名为oldDate
的变量保存了你从数据库中获得的值:
DateTime newDate = new DateTime(oldDate.Year, oldDate.Month, oldDate.Day, 8, 0, 0).AddDays(1);