点击查看代码
package com.sleepman.pers;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.util.Calendar;
import java.util.Date;
public class Demo {
public static void main(String[] args) throws ParseException {
// 待转换的日期字符串
String strDate = "2023年09月10日";
// 创建SimpleDateFormat对象,指定日期字符串的格式
SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日");
// 定义日期格式
DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy年MM月dd日");
// 将字符串解析为Date对象
Date date = sdf.parse(strDate);
// 调用不同方法进行日期操作
//有误
long time1 = getTime1(date);
//正确
long time2 = getTime2(date);
//正确
Date time3 = getTime3(date);
//正确
String time4=getTime4(strDate,dtf);
// 输出结果
//有误
System.out.println("加上一个月的时间(方法1):" + sdf.format(time1));
System.out.println("加上一个月的时间(方法2):" + sdf.format(time2));
System.out.println("加上一个月的时间(方法3):" + sdf.format(time3));
System.out.println("加上一个月的时间(方法4):" + time4);
}
private static String getTime4(String strDate,DateTimeFormatter dtf) {
// 将字符串解析为LocalDate对象
LocalDate initialDate = LocalDate.parse(strDate, dtf);
// 加上一个月
LocalDate resultDate = initialDate.plusMonths(1);
return resultDate.format(dtf);
}
/**
* 获取加上一个月后的时间(方法1)
*
* @param date 输入的日期
* @return 加上一个月后的时间
*/
private static long getTime1(Date date) {
long time = date.getTime();
// 一个月的毫秒数
long addTime = 24 * 60 * 60 * 1000 * 30;
// 加上一个月的时间
time += addTime;
return time;
}
/**
* 获取加上一个月后的时间(方法2)
*
* @param date 输入的日期
* @return 加上一个月后的时间
*/
private static long getTime2(Date date) {
long time = date.getTime();
// 一个月的毫秒数
long addTime = 24 * 60 * 60 * 1000;
// 加上一个月的时间
time += addTime*30;
return time;
}
/**
* 获取加上一个月后的时间(方法3)
*
* @param date 输入的日期
* @return 加上一个月后的时间
*/
private static Date getTime3(Date date) {
// 获取Calendar实例
Calendar instance = Calendar.getInstance();
// 将日期设置为输入日期
instance.setTime(date);
// 在Calendar上加上一个月
instance.add(Calendar.MONTH, 1);
// 返回加上一个月后的时间
return instance.getTime();
}
}