如何在 Java 中将字符串转换为日期

原文:https://www.studytonight.com/java-examples/how-to-convert-string-to-date-in-java

在本文中,我们将向您介绍在 Java 中将字符串转换为日期的非常简单易懂的方法。以纯文本格式存储日期并在以后用于业务逻辑是软件行业中非常常见的做法。通过以纯文本存储日期,我们可以节省大量存储空间。

这是一个非常经典的将字符串转换为日期的例子。自己试试这个例子,它会帮助你获得将字符串转换为日期的过程背后的直觉。

示例:将字符串转换为日期

import java.text.SimpleDateFormat;  
import java.util.Date;  
public class StudyTonight
{
    public static void main(String args[]) throws Exception 
    {       

      String string_format="4/1/2021";  
      Date date_format=new SimpleDateFormat("dd/MM/yyyy").parse(string_format);  
      System.out.println(" Date in String Format: "+string_format+" \n Converted Date: "+date_format);  

    }
}

字符串格式日期:2021 年 4 月 1 日转换日期:2021 年 1 月 4 日星期一 00:00:00 IST

enlightened执行上述示例时,不要忘记在主方法中使用 throws 关键字,否则会出现编译时错误。

在代码中,您可能已经注意到simpledate format(“DD/MM/yyyy”)方法来设置日期的格式。这意味着所提到的日期采用 【日/月/年】 的格式。Java 支持许多格式来定制日期,具有很大的灵活性。你可以在下面看到同样的表格。

### Java 中所有可用的日期和时间格式 |

标志

|

符号代表

| | --- | --- | | G | 时代 | | u | 年 | | y | 时代之年 | | D | 一年中的一天 | | 男/女 | 年度月份 | | d | 每月的某一天 | | Q/q | 季度 | | Y | 基于周的年 | | w | 以周为单位的年度 | | W | 每月的一周 | | E | 星期几 | | 英/法 | 本地化的星期几 | | F | 每月的一周 | | a | 每天上午-下午 | | h | 上午 11 点至下午 1 点(1-12 点) | | K | 上午 11 点(0-11 点) | | k | 凌晨 1 点至 24 点 | | H | 一天中的小时数(0-23) | | m | 小时分钟 | | s | 分钟秒 | | S | 几分之一秒 | | A | 百万日 | | n | 纳米秒 | | 普通 | 纳米技术 | | V | 时区标识 | | z | 时区名称 | | O | 局部区域偏移 | | X | 零的区域偏移 | | x | 区域偏移 | | Z | 区域偏移 |

将字符串转换为日期的示例

在本例中,我们使用SimpleDateFormat 类将字符串格式的给定日期转换为Date 格式。将字符串转换为日期时,请确保其格式正确,否则将引发异常,即ParseException

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class StudyTonight {

    public static void main(String[] args) {

        SimpleDateFormat formatter = new SimpleDateFormat("dd-MMM-yyyy");
        String date_String = "4-Jan-2021";

        try {
            Date date = formatter.parse(date_String);
            System.out.println(date);
            System.out.println(formatter.format(date));
        } catch (ParseException e) {
            e.printStackTrace();
        }
    }
}

我的 Jan 04 00:00:00 是 2021 年 1 月 04 日-2021

现在让我们打破上面的代码,逐行理解

SimpleDateFormat formatter = new SimpleDateFormat("dd-MMM-yyyy");

SimpleDateFormat 是来自java.text包的一个类,用于设置日期的格式。在上面的例子中【DD-MMM-yyy】可以进一步简化成这样:

  • 每月的第几天
  • 一年中的月份
  • yyyy -纪元年

所以,这是格式化的格式,可以应用到以后的任何日期。如需进一步说明,您可以参考上面给出的表格。

String date_String = "4-Jan-2021";

这是以字符串格式给出的简单日期。

Date date = formatter.parse(date_String);

这里,使用formatter.parse()方法将String类型的日期转换为日期。

这里我们提供了一些将字符串转换为日期的示例

例 1

在这种情况下,我们得到了一个格式为“dd/MM/yyyy”的日期,我们希望使用SimpleDateFormat() 将该日期转换为日期类型的“dd/MM/yyyy”格式。我们创建了一个日期格式,然后通过调用Format.parse() 方法将字符串转换为所需的日期格式。

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class StudyTonight 
{
    public static void main(String[] args)
    {
        SimpleDateFormat formatter = new SimpleDateFormat("dd/MM/yyyy");
        String date_String = "01/04/2021";
        try
        {
            Date date = formatter.parse(date_String);
            System.out.println(date);
            System.out.println(formatter.format(date));
        }
        catch (ParseException e)
        {
            e.printStackTrace();
        }
    }
}

因此 04 月 01 日 00:00:00 是 2021 年 4 月 1 日 2021

例 2

在这种情况下,我们得到了日期“2021 年 1 月 4 日星期一”,我们希望将该日期转换为日期类型的“E,MMM dd yyyy”格式。使用SimpleDateFormat() 我们创建了一个日期格式,然后通过调用Format.parse() 方法将字符串转换为所需的日期格式。

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class StudyTonight 
{
    public static void main(String[] args)
    {
        SimpleDateFormat formatter = new SimpleDateFormat("E, MMM dd yyyy");
        String date_String = "Mon, Jan 4 2021";
        try
        {
            Date date = formatter.parse(date_String);
            System.out.println(date);
            System.out.println(formatter.format(date));

        } 
        catch (ParseException e)
        {
            e.printStackTrace();
        }
    }
}

我的 Jan 04 00:00:00 是 2021 Mon,Jan 04 2021

例 3

在这种情况下,我们得到的日期是“2021 年 1 月 4 日星期一下午 12:15:30”,我们希望将该日期转换为“EEEE,MMM dd,yyyy HH:mm:ss a”格式的日期类型。使用SimpleDateFormat() 我们创建了一个日期格式,然后通过调用Format.parse() 方法将字符串转换为所需的日期格式。

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class StudyTonight 
{

    public static void main(String[] args)
    {
        SimpleDateFormat formatter = new SimpleDateFormat("EEEE, MMM dd, yyyy HH:mm:ss a");
        String date_String = "Monday, Jan 4, 2021 12:15:30 PM";
        try
        {

            Date date = formatter.parse(date_String);
            System.out.println(date);
            System.out.println(formatter.format(date));
        } 
        catch (ParseException e) 
        {
            e.printStackTrace();
        }
    }
}

我的 Jan 04 12:15:30 是 2021 星期一,Jan 04,2021 是下午 12:15:30

结论:

我们有不同的类来将字符串格式的日期更改为实际日期,这为我们提供了在以后的日期上进行不同操作的能力。字符串格式的所有有效日期都可以通过指定所需的格式,使用SimpleDateFormat 类转换为Date 格式。如果日期是日期格式,那么我们可以计算两天之间的持续时间,我们可以比较两个日期,如果日期以字符串格式表示,这是不可能的。