4

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

8 回答 8

11

如果dateTimeWycenaPortfelaObliczDataOd是类型DateTime,您可以使用:

dateTimeWycenaPortfelaObliczDataOd.Date

仅获取日期部分(时间为 00:00:00 ...)。如果要获取日期的最后一个刻度,可以使用:

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

但你真的更好地处理下一个日期(.AddDays(1))。

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

于 2010-03-05T14:46:49.907 回答
5

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

于 2010-03-05T14:45:07.460 回答
2

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

DateTime varObliczOd = dateTimeWycenaPortfelaObliczDataOd.Date;
DateTime varObliczDo = dateTimeWycenaPortfelaObliczDataOd.AddDayes(1).AddTicks(-1);
于 2010-03-05T14:48:39.457 回答
2

了解您为什么需要它会有所帮助,但这会起作用。

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

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

于 2010-03-05T14:49:51.863 回答
1

您可以使用 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-05 16:12:12话现在就是2010-03-06 00:00:00

于 2010-03-05T14:47:39.717 回答
0

可能是这样的?我已经把这个打出来了,代码中可能有一些错误。

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

DateTime varObliczDo  = new DateTime(dateTimeWycenaPortfelaObliczDataDo.Year, dateTimeWycenaPortfelaObliczDataDo.Month, dateTimeWycenaPortfelaObliczDataDoDay, 23, 59, 59);
于 2010-03-05T14:45:42.857 回答
0

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 )

于 2010-03-05T14:45:51.413 回答
0

您可以使用 TimeSpan:

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

这样,您至少可以避免解析,根据当地文化设置,解析可能会失败。

于 2010-03-05T14:48:16.960 回答