我想在Joda-Time库的DateTime
课程中手动设置小时/分钟/秒。我想要做的是保持年/月/日值,但丢弃日期对象的小时/分钟/秒。
DateTime today = new DateTime();
today.??? (method to call set hours/minutes/seconds to 0)
祝大家新年快乐!
答案 0 :(得分:0)
Joda-Time使用immutable objects。我们调用一个方法来生成一个主要基于原始实例的新实例,而不是调用setter方法来改变(“mutate”)一个成员变量。
withTime
要创建具有特定时间的新DateTime,请调用withTime
方法。
DateTime now = DateTime.now( DateTimeZone.forID( "America/Montreal" ) );
DateTime lunchtimeToday = now.withTime( 12, 30, 0, 0 ); // Half-past noon.
如果您想要午夜(当天的第一时刻),请致电withTimeAtStartOfDay
。通常这是00:00:00.000
,但并非总是如此。
DateTime todayStart = DateTime.now( DateTimeZone.forID( "America/Montreal" ) ).withTimeAtStartOfDay();
请注意,时区对于确定一天何时开始至关重要。巴黎的“今天”比蒙特利尔更早开始。
如果省略时区,则会自动应用JVM的当前默认时区。最好指定而不是隐含地依赖此默认值。
使用proper time zone names。避免使用既不标准化也不唯一的3或4个字母代码。