📅  最后修改于: 2023-12-03 14:49:25.718000             🧑  作者: Mango
在Java编程中,经常需要从日期字符串中获取年、月、日等信息,这些信息在很多业务场景中都是非常重要的。本文将介绍Java中从日期字符串获取年月日的几种方法及实现代码。
Calendar类是Java中用于操作日期和时间的类,可以通过它获取年月日等信息。可以使用SimpleDateFormat类先将日期字符串转为Date对象,再将Date对象转为Calendar对象,最后从Calendar对象中获取年月日等信息。
代码实现如下:
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
public class DateUtil {
/**
* 从日期字符串中获取年份
*
* @param dateStr 日期字符串,格式为yyyy-MM-dd
* @return 年份
*/
public static int getYearFromString(String dateStr) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
try {
Date date = sdf.parse(dateStr);
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
return calendar.get(Calendar.YEAR);
} catch (Exception e) {
e.printStackTrace();
}
return -1;
}
/**
* 从日期字符串中获取月份
*
* @param dateStr 日期字符串,格式为yyyy-MM-dd
* @return 月份
*/
public static int getMonthFromString(String dateStr) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
try {
Date date = sdf.parse(dateStr);
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
return calendar.get(Calendar.MONTH) + 1;
} catch (Exception e) {
e.printStackTrace();
}
return -1;
}
/**
* 从日期字符串中获取日期
*
* @param dateStr 日期字符串,格式为yyyy-MM-dd
* @return 日期
*/
public static int getDayFromString(String dateStr) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
try {
Date date = sdf.parse(dateStr);
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
return calendar.get(Calendar.DATE);
} catch (Exception e) {
e.printStackTrace();
}
return -1;
}
}
使用方法:
String dateStr = "2022-01-01";
int year = DateUtil.getYearFromString(dateStr); // 2022
int month = DateUtil.getMonthFromString(dateStr); // 1
int day = DateUtil.getDayFromString(dateStr); // 1
Java 8引入了新的日期时间API,其中包括LocalDate类,它可以方便地从日期字符串中获取年月日等信息。
代码实现如下:
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
public class DateUtil {
/**
* 从日期字符串中获取年份
*
* @param dateStr 日期字符串,格式为yyyy-MM-dd
* @return 年份
*/
public static int getYearFromString(String dateStr) {
LocalDate localDate = LocalDate.parse(dateStr, DateTimeFormatter.ofPattern("yyyy-MM-dd"));
return localDate.getYear();
}
/**
* 从日期字符串中获取月份
*
* @param dateStr 日期字符串,格式为yyyy-MM-dd
* @return 月份
*/
public static int getMonthFromString(String dateStr) {
LocalDate localDate = LocalDate.parse(dateStr, DateTimeFormatter.ofPattern("yyyy-MM-dd"));
return localDate.getMonthValue();
}
/**
* 从日期字符串中获取日期
*
* @param dateStr 日期字符串,格式为yyyy-MM-dd
* @return 日期
*/
public static int getDayFromString(String dateStr) {
LocalDate localDate = LocalDate.parse(dateStr, DateTimeFormatter.ofPattern("yyyy-MM-dd"));
return localDate.getDayOfMonth();
}
}
使用方法:
String dateStr = "2022-01-01";
int year = DateUtil.getYearFromString(dateStr); // 2022
int month = DateUtil.getMonthFromString(dateStr); // 1
int day = DateUtil.getDayFromString(dateStr); // 1
本文介绍了Java中从日期字符串获取年月日的两种方法,一种是使用Calendar类,另一种是使用Java 8引入的LocalDate类。无论是哪种方法,都可以很方便地从日期字符串中获取所需的年月日等信息。