我有一个LocalDate和一个LocalTime,并希望简单地从它们创建一个LocalDateTime结构。 我想到了以下扩展方法,我认为这是最快的但是由于一个不明原因,当前版本的API中不存在字段localTime.TickOfMillisecond。所以它不起作用。
public static LocalDateTime At(this LocalDate localDate, LocalTime localTime) {
return new LocalDateTime(localDate.Year, localDate.Month, localDate.Day, localTime.Hour, localTime.Minute, localTime.Second, localTime.Millisecond, localTime.TickOfMillisecond);
}
所以,我在平均时间内停留使用:
public static LocalDateTime At(this LocalDate localDate, LocalTime localTime) {
return localDate.AtMidnight().PlusTicks(localTime.TickOfDay);
}
感谢任何建议。
答案 0 :(得分:11)
这比你现在获得它的方式容易得多 - 只需使用+
operator:
LocalDate date = ...;
LocalTime time = ...;
LocalDateTime dateTime = date + time;
答案 1 :(得分:2)
有一种方法可以将LocalDate和LocalTime结合起来形成LocalDateTime
LocalDate date = ...;
LocalTime time = ...;
LocalDateTime dateTime=date.atTime(time);
答案 2 :(得分:1)
好吧,我不确定为什么它不在API中。也许Jon Skeet可以回答这个问题。
我在第二个例子中看到你的方式没有任何问题,但你可以像这样计算tickOfMillisecond
:
public static LocalDateTime At(this LocalDate localDate, LocalTime localTime)
{
var tickOfMillisecond = localTime.TickOfSecond - localTime.Millisecond * 10000;
return new LocalDateTime(localDate.Year, localDate.Month, localDate.Day, localTime.Hour, localTime.Minute, localTime.Second, localTime.Millisecond, tickOfMillisecond);
}
就我个人而言,我认为LocalDateTime
应该有一个构造函数,所以你可以这样做:
var ldt = new LocalDateTime(localDate, localTime);
另一件事 - 也许您的扩展方法应该验证日期和时间都在同一个日历系统中,然后将其传递给结果?我从来没有使用任何日历,但ISO,所以我不确定。