时间vs日期vs日历java

gho*_*der 5 java time android calendar date

那么在我的应用我想获得当前的日期和月份abnd地方时(currentTimeZone小时),并根据其值显示一些东西.

我已阅读了几个解决方案,并使用了以下内容:

Calendar c = Calendar.getInstance(); 
            int day=c.get(Calendar.DATE);
            int month=c.get(Calendar.MONTH);
Run Code Online (Sandbox Code Playgroud)

或这个

Time today = new Time(Time.getCurrentTimezone());
            today.setToNow();
            int day2=today.monthDay;
            int month2=today.month;
Run Code Online (Sandbox Code Playgroud)

我的问题是:

1)考虑到他们的结果,哪一个更"稳定"?我的意思是它没有任何问题.

2)此外,他们是否都考虑了TimeZone?我认为第二个确实如此,但日历呢?

3)我尝试了这个代码,我找到了:

SimpleDateFormat s = new SimpleDateFormat("ddMMyyyyhhmmss");
            String format = s.format(new Date());
Run Code Online (Sandbox Code Playgroud)

我得到Date()必须有一个参数的错误.很奇怪,因为在每个答案中他们都这样使用它.

怎么了?

4)你建议我用什么?我唯一想要的是在当前月份,日期,小时与一些存储在内存中的简单比较.(例如,如果是1月29日,则显示该事件.如果是19.00 am发送通知,依此类推.)

Joã*_*lva 14

1)考虑到结果,哪一个更"稳定"?我的意思是它没有任何问题.

它们都是稳定且经过良好测试的,尤其Calendar是自JDK1.1以来它在Java API中.还从文档Time:

Calendar和GregorianCalendar类的替代方法.Time类的实例表示以第二精度指定的时刻.它以struct tm为模型,实际上使用struct tm来实现大部分功能.

Time,imho,比工作更容易Calendar.

2)此外,他们是否都考虑了TimeZone?我认为第二个确实如此,但日历呢?

是的,他们这样做.您可以指定TimeZone使用Calendar.getInstance(java.util.TimeZone).否则,将使用默认值.

3)我尝试了这个代码,我找到了:

代码工作得很好.例如,确保使用new java.util.Date()而不是代替java.sql.Date.

4)你建议我用什么?我唯一想要的是在当前月份,日期,小时与一些存储在内存中的简单比较.(例如,如果是1月29日,则显示该事件.如果是19.00 am发送通知,依此类推.)

这真的是个人选择的问题.使用Calendar,例如,比较如果今天是1月29日,你可以简单地使用以下命令:

Calendar today = Calendar.getInstance();
int dayOfMonth = today.get(Calendar.DAY_OF_MONTH);
int month = today.get(Calendar.MONTH);
if (month == Calendar.JANUARY && dayOfMonth == 29) {
  // January 29
}
Run Code Online (Sandbox Code Playgroud)