Calendar calendar = Calendar.getInstance();的作用
时间: 2023-11-19 07:21:11 浏览: 101
这行代码的作用是创建一个`Calendar`对象并初始化为当前时间。`Calendar`类是Java中表示日期和时间的抽象类,通过`getInstance`方法可以获取当前系统时间的`Calendar`对象。使用这个对象,可以方便地进行时间和日期的计算、格式化等操作。例如,可以使用`get`方法获取当前时间的年、月、日、时、分、秒等各个字段的值,也可以使用`set`方法设置这些字段的值,还可以使用`add`方法对某个字段进行加减操作。
相关问题
优化这段代码 Calendar calendar1 = Calendar.getInstance(); SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM"); String nowMonth = sdf1.format(calendar1.getTime()); Calendar calendar2 = Calendar.getInstance(); calendar2.add(Calendar.MONTH, -2); String moth2 = sdf1.format(calendar2.getTime()); Calendar calendar3 = Calendar.getInstance(); calendar3.add(Calendar.MONTH, -1); String moth3 = sdf1.format(calendar3.getTime());
可以将创建`SimpleDateFormat`和格式化日期的过程进行重构,避免重复创建对象,提高效率。可以将其改为如下代码:
```java
Calendar calendar = Calendar.getInstance();
calendar.add(Calendar.MONTH, -2);
String month2 = new SimpleDateFormat("yyyy-MM").format(calendar.getTime());
calendar.add(Calendar.MONTH, 1);
String month3 = new SimpleDateFormat("yyyy-MM").format(calendar.getTime());
String nowMonth = new SimpleDateFormat("yyyy-MM").format(new Date());
```
这样,我们只创建了一个`SimpleDateFormat`对象,并重复使用它来格式化不同的日期。同时,我们使用了`new Date()`来获取当前的日期,而不是通过`Calendar`对象来获取,这样也可以提高效率。
另外,对于`Calendar`对象,可以将其更换为`java.time`包中的`LocalDateTime`对象,这是Java 8中引入的新的日期时间API,使用起来更加简洁和易读。可以改为如下代码:
```java
LocalDateTime now = LocalDateTime.now();
String nowMonth = now.format(DateTimeFormatter.ofPattern("yyyy-MM"));
String month2 = now.minusMonths(2).format(DateTimeFormatter.ofPattern("yyyy-MM"));
String month3 = now.minusMonths(1).format(DateTimeFormatter.ofPattern("yyyy-MM"));
```
这样,我们可以避免使用`Calendar`对象,而是使用更加现代化和易读的`LocalDateTime`对象,并使用`DateTimeFormatter`来格式化日期。
public class TodayUtil { public static String getToday(){ Calendar calendar = Calendar.getInstance(); String year = String.valueOf(calendar.get(Calendar.YEAR)); String month = String.valueOf(calendar.get(Calendar.MONTH)+1); String date = String.valueOf(calendar.get(Calendar.DATE)); String day = String.valueOf(calendar.get(Calendar.HOUR_OF_DAY)); String minute = String.valueOf(calendar.get(Calendar.MINUTE)); String second = String.valueOf(calendar.get(Calendar.SECOND)); if(calendar.get(Calendar.MONTH)+1 < 10) month = "0"+month; if(calendar.get(Calendar.DATE) < 10) date = "0"+date; return year+"-"+month+"-"+date+" "+day+":"+minute+":"+second; } public static String getTodayYmd(){ Calendar calendar = Calendar.getInstance(); Date today = calendar.getTime(); SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd"); String result = format.format(today); return result; } //获取过去的第past天 public static String getPastDate(int past) { Calendar calendar = Calendar.getInstance(); //System.out.println(calendar.get(Calendar.DAY_OF_YEAR)); calendar.set(Calendar.DAY_OF_YEAR, calendar.get(Calendar.DAY_OF_YEAR) - past); Date today = calendar.getTime(); //System.out.println(today); SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd"); String result = format.format(today); return result; } }
这是一个Java工具类,提供了以下方法:
1. getToday():获取当前日期和时间,格式为 yyyy-MM-dd HH:mm:ss。
2. getTodayYmd():获取当前日期,格式为 yyyy-MM-dd。
3. getPastDate(int past):获取过去第 past 天的日期,格式为 yyyy-MM-dd。
这些方法都是基于当前系统时间的 Calendar 对象进行计算得出的。
阅读全文