📜  从日期字符串获取年月日java(1)

📅  最后修改于: 2023-12-03 14:49:25.718000             🧑  作者: Mango

从日期字符串获取年月日Java

在Java编程中,经常需要从日期字符串中获取年、月、日等信息,这些信息在很多业务场景中都是非常重要的。本文将介绍Java中从日期字符串获取年月日的几种方法及实现代码。

1. 使用Calendar类

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
2. 使用LocalDate类

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类。无论是哪种方法,都可以很方便地从日期字符串中获取所需的年月日等信息。