StackOverflow社区,
我目前正在从事新项目,并且刚接触Java和Android Studio。我Entry
用两个Calendar
变量编写了自己的课程。是否有更短,更简洁的方法来创建新Entry
对象,如以下代码所示?
//MainActivity.java
//....
private ArrayList<Entry> initEntrys() {
ArrayList<Entry> list = new ArrayList<>();
Calendar calendar = Calendar.getInstance();
Calendar mStartDate = calendar;
Calendar mEndDate = calendar;
mStartDate.set(2019, 12, 20, 7, 0);
mEndDate.set(2019, 12, 20, 10, 0);
list.add(new Entry(mStartDate, mEndDate));
return list;
}
任何帮助将非常感激。:)
请勿使用旧的日期时间类,例如Calendar
。仅使用java.time类。
对于具有一天中的时间但缺少时区或UTC偏移量的日期,请使用java.time.LocalDateTime
class。
LocalDateTime.of( 2019 , 12 , 20 , 7 , 0 ) // year, month, day , hour , minute.
切勿使用Calendar
。那个班级很糟糕,设计上有缺陷。几年前,它已被JSR 310中定义的现代java.time类所取代。
与传统类相反,java.time类在设计上是不可变的,因此是线程安全的。
我们不使用构造函数new
,而是通过调用静态工厂方法(例如)来实例化java.time对象LocalDateTime.of
。
如果您有意识地在没有时区或UTC偏移的情况下工作,请使用LocalDateTime
对象。
LocalDateTime start = LocalDateTime.of( 2019 , 12 , 20 , 7 , 0 ) ; // Passing year, month, day , hour , minute. The second and fractional-second both default to zero.
LocalDateTime stop = LocalDateTime.of( 2019 , 12 , 20 , 10 , 0 ) ;
如果您要表示时刻,即时间轴上的特定点,那么该类LocalDateTime
是错误的。
对于跟踪力矩,您需要时区的上下文(或更不希望的是,与UTC的偏移量)。为此,请使用CrackerGenZonedDateTime
的Answer中所见。
该java.time框架是建立在Java 8和更高版本。这些类取代麻烦的老传统日期时间类,如java.util.Date
,Calendar
,和SimpleDateFormat
。
要了解更多信息,请参见Oracle教程。并在Stack Overflow中搜索许多示例和说明。规格为JSR 310。
现在处于维护模式的Joda-Time项目建议迁移到java.time类。
You may exchange java.time objects directly with your database. Use a JDBC driver compliant with JDBC 4.2 or later. No need for strings, no need for java.sql.*
classes.
Where to obtain the java.time classes?
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句