C# DateTime在C中转换为日期,然后再转换回DateTime#

C# DateTime在C中转换为日期,然后再转换回DateTime#,c#,.net,datetime,date,datetimepicker,C#,.net,Datetime,Date,Datetimepicker,我使用它将DateTime值转换为Date,然后加上00:00:00和23:59:59,以确保在计算东西时考虑到一整天。我很确定这是一种错误的做事方式。正确的方法是什么 DateTime varObliczOd = DateTime.Parse(dateTimeWycenaPortfelaObliczDataOd.Value.ToShortDateString() + " 00:00:00"); DateTime varObliczDo = DateTime.Pa

我使用它将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");

DateTime对象有一个可能是您所需要的属性。

可能是这样的吗?我是在脑子里打出来的,代码中可能有一些错误

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 varObliczOd = dateTimeWycenaPortfelaObliczDataOd.Value.Date;
DateTime varObliczDo = dateTimeWycenaPortfelaObliczDataDo.Value.Date.AddDays(1);

DateTime newDate=新日期时间(oldDate.Year,oldDate.Month,oldDate.Day,23,59,59)
DateTime newDate=new DateTime(oldDate.Year,oldDate.Month,oldDate.Day,0,0)

如果
dateTimeWycenaPortfelaObliczDataOd
类型为
DateTime
,则可以使用:

dateTimeWycenaPortfelaObliczDataOd.Date
dateTimeWycenaPortfelaObliczDataOd.Date.AddDays(1).AddTicks(-1)
仅获取日期部分(时间为00:00:00…)。 如果要获取日期的最后一个勾号,可以使用:

dateTimeWycenaPortfelaObliczDataOd.Date
dateTimeWycenaPortfelaObliczDataOd.Date.AddDays(1).AddTicks(-1)
但是你最好在下一个日期(.AddDays(1))工作


在任何情况下,都不需要转换为字符串并返回到DateTime。

您可以使用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设置为您的结束日期,没有时间加上一天(午夜)。因此,如果
dateTimeWycenaPortfelaObliczDataDo
2010-03-0516:12:12
,那么现在应该是
2010-03-06 00:00:00

您可以使用时间跨度:

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

这样,您至少可以避免解析,解析可能会失败,具体取决于本地区域性设置。

您可以对DateTime对象使用以下属性/方法来获取值:

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

知道你为什么需要它会很有帮助,但这是可行的

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

使用
Date
属性,然后直接操作它们来创建所需的时间组件-无需解析和转换

你能解释一下这是在什么环境下使用的吗?你想用这些日期做什么。如果你不想实时显示,你可以直接使用dateTimeVar.Date,它会给你一个12:00AM的结束日期,你可以使用dateTimeVar.Date.AddDays(1.AddSeconds(-1)得到一天的结束日期,我用它向Sql数据库提供这个日期。这一点很重要,因为它可以获取00到23:59之间的所有事务(虽然它们只能工作8到18天,但我更愿意覆盖一整天),特别是有时00:00:00用于编写系统而不是人员进行的事务。太好了,我不能使用。AddDays(1)只因为它会考虑第二天的事务(有些东西是用db写的,00:00:00完成)我的意思是,如果您使用日期进行范围检查,您可以提取所有时间戳符合以下要求的加工记录:StarTofTomory>timestamp>=startOfToday。处理当天的最后一个滴答声也应该可以,只是闻起来很难闻。没错,我应该使用timestamp