Java中处理日期和时间,通常使用java.util.Date、java.util.Calendar或者更现代的java.time包中的类。
以下是使用java.util.Calendar进行日期运算的一些基本操作:
1、创建一个Calendar对象:
Calendar calendar = Calendar.getInstance();
2、获取当前日期:
Date currentDate = calendar.getTime();
3、设置日期:
我们可以通过set方法设置年、月、日、小时、分钟、秒等:
calendar.set(Calendar.YEAR, 2024);
calendar.set(Calendar.MONTH, Calendar.JANUARY); // 注意月份是从0开始的,所以1月是1
calendar.set(Calendar.DAY_OF_MONTH, 15);
calendar.set(Calendar.HOUR_OF_DAY, 12);
calendar.set(Calendar.MINUTE, 30);
calendar.set(Calendar.SECOND, 0);
4、日期运算:
增加或减少日期单位:
calendar.add(Calendar.DAY_OF_MONTH, 5); // 增加5天
calendar.add(Calendar.MONTH, -1); // 减少1个月
5、获取日期单位:
获取当前设置的年、月、日等:
int year = calendar.get(Calendar.YEAR);
int month = calendar.get(Calendar.MONTH) + 1; // 月份从0开始,所以加1
int dayOfMonth = calendar.get(Calendar.DAY_OF_MONTH);
6、输出日期:
使用toLocaleString()或SimpleDateFormat格式化日期:
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String formattedDate = sdf.format(calendar.getTime());
System.out.println(formattedDate);
7、如果使用的是Java 8或更高版本,可以考虑使用java.time包中的LocalDate、LocalDateTime和Period等类,它们提供了更直观和强大的日期时间处理功能。
import java.time.LocalDate;
import java.time.Period;
//Period.between()返回了一个Period对象,可以用来计算两个日期之间的天数、月数和年数。
LocalDate startDate = LocalDate.now();
LocalDate endDate = LocalDate.of(2024, 5, 28);
Period difference = Period.between(startDate, endDate);
System.out.println("Days between: " + difference.getDays());
8、具体示例:
java 已知一个Date(),获取前一天和后一天
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
public class DateUtil {
public static void main(String[] args) {
Date date = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
String specifiedDay = sdf.format(date);
System.out.println(getSpecifiedDayBefore(specifiedDay));
System.out.println(getSpecifiedDayAfter(specifiedDay));
}
/**
* 获得指定日期的前一天
*
* @param specifiedDay
* @return
* @throws Exception
*/
public static String getSpecifiedDayBefore(String specifiedDay) {
Calendar c = Calendar.getInstance();
Date date = null;
try {
date = new SimpleDateFormat("yy-MM-dd").parse(specifiedDay);
} catch (ParseException e) {
e.printStackTrace();
}
c.setTime(date);
int day = c.get(Calendar.DATE);
c.set(Calendar.DATE, day - 1);
String dayBefore = new SimpleDateFormat("yyyy-MM-dd").format(c.getTime());
return dayBefore;
}
/**
* 获得指定日期的后一天
*
* @param specifiedDay
* @return
*/
public static String getSpecifiedDayAfter(String specifiedDay) {
Calendar c = Calendar.getInstance();
Date date = null;
try {
date = new SimpleDateFormat("yy-MM-dd").parse(specifiedDay);
} catch (ParseException e) {
e.printStackTrace();
}
c.setTime(date);
int day = c.get(Calendar.DATE);
c.set(Calendar.DATE, day + 1);
String dayAfter = new SimpleDateFormat("yyyy-MM-dd").format(c.getTime());
return dayAfter;
}
}