如何从字符串日期更改日期格式

时间:2018-12-11 04:57:29

标签: java android

我将日期作为这样的字符串

String date = "11-12-2018"

我想将其更改为“ 2018-12-11”

具有相同的变量。因此,我尝试了下面的代码,但没有得到预期的输出。

String date = "11-12-2018"

SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");

Date d = df.parse(date);

导致: “ 0012-06-09”


我想要 “ 2018-12-11”

4 个答案:

答案 0 :(得分:3)

您可以通过3种方式执行此操作。首先使用SimpleDateFormatDate,其次使用DateTimeFormatterLocalDate,然后使用Split

1。使用Date和SimpleDateFormat

String date = "11-12-2018";
SimpleDateFormat df = new SimpleDateFormat("dd-mm-yyyy");
java.util.Date d = df.parse(date);
String finalDate = new SimpleDateFormat("yyyy-MM-dd").format(d);
System.out.println(finalDate);

在这里,我们有实际的日期String date = "11-12-2018";,我们知道要将其更改为2018-12-11

因此,我们使用此代码将该日期解析为Date对象

SimpleDateFormat df = new SimpleDateFormat("dd-mm-yyyy");
java.util.Date d = df.parse(date);

好的,现在我们有了一个实际日期的日期对象,现在让我们将其格式化为新日期。

String finalDate = new SimpleDateFormat("yyyy-MM-dd").format(d);

2。使用LocalDate和DateTimeFormatter

好的,在这里我们再次定义日期和2 DateTimeFormatter。

DateTimeFormatter oldFormatter = DateTimeFormatter.ofPattern("dd-MM-yyyy");
DateTimeFormatter newFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");

第一个格式化程序是我们的旧日期格式,第二个是我们将旧日期转换成的新格式。

好的,现在就使用它们吧!

现在,我们通过将LocalDatedateString对象一起解析,使用oldFormatter创建一个新的oldFormatter对象

LocalDate dateTime = LocalDate.parse(date, oldFormatter);

现在让我们对其进行格式化。

String reformattedDate = dateTime.format(newFormatter);

就这么简单!这是完整的代码。

String date = "11-12-2018";
DateTimeFormatter oldFormatter = DateTimeFormatter.ofPattern("dd-MM-yyyy");
DateTimeFormatter newFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
LocalDate dateTime = LocalDate.parse(date, oldFormatter);
String reformattedDate = dateTime.format(newFormatter);
System.out.println(reformattedDate);

3。使用String :: Split

好的,这部分非常简单。让我们使用-

分割日期
String[] dates = date.split("-");

我们已经知道日期顺序可以使用String::format

对其进行格式化
String reformattedDate = String.format("%s-%s-%s", dates[2], dates[1], dates[0]);

这是完整的代码

String date = "11-12-2018";
String[] dates = date.split("-");
String reformattedDate = String.format("%s-%s-%s", dates[2], dates[1], dates[0]);
System.out.println(reformattedDate);

答案 1 :(得分:0)

尝试以下适用于您情况的代码:

首先从字符串中解析输入格式,

String date = "11-12-2018";
SimpleDateFormat df = new SimpleDateFormat("dd-MM-yyyy");

然后将其转换为所需的格式,

Date dateTobeParse = null;
try {
    dateTobeParse = df.parse(date);
} catch (ParseException e) {
    e.printStackTrace();
}
if (dateTobeParse != null) {
    SimpleDateFormat outFormat = new SimpleDateFormat("yyyy-MM-dd");
    String outputDate = outFormat.format(dateTobeParse);
}

答案 2 :(得分:0)

这是我用于日期和时间转换的常用功能

public String convertDateAndTime(String date, String oldFormat, String newFormat) {
        SimpleDateFormat sdf = new SimpleDateFormat(oldFormat);
        Date currentdate;
        String converted = "";
        try {
            currentdate = sdf.parse(date);
            SimpleDateFormat sdf2 = new SimpleDateFormat(newFormat);
            converted = sdf2.format(currentdate);
        } catch (ParseException e) {
            e.printStackTrace();
        }
        return converted;
    }

您只需要传递日期字符串以及它们的新旧格式。 在您的情况下,请调用此函数

String converteddate = convertDateAndTime("11-12-2018","dd-mm-yyyy","yyyy-MM-dd");

答案 3 :(得分:-1)

请尝试下面的代码

1)制作如下所示的方法

public String changeDateFormat(String currentFormat, String requiredFormat, String dateString) {
        String result = "";

        SimpleDateFormat formatterOld = new SimpleDateFormat(currentFormat, Locale.getDefault());
        SimpleDateFormat formatterNew = new SimpleDateFormat(requiredFormat, Locale.getDefault());
        Date date = null;
        try {
            date = formatterOld.parse(dateString);
        } catch (ParseException e) {
            e.printStackTrace();
        }
        if (date != null) {
            result = formatterNew.format(date);
        }
        return result;
    }//end of changeDateFormat()

该方法的第一个参数是您当前的日期格式,具体为'dd-MM-yyyy'

在您的情况下,第二个参数已输出或需要日期格式,它将为'yyyy-MM-dd'

第三个参数是您要更改格式的日期

2)运行下面的方法

String oldFormatDate = "11-12-2018";
String myDate = changeDateFormat("dd-MM-yyyy", "yyyy-MM-dd", oldFormatDate);
Log.d(TAG, "Old formatted Date : " + oldFormatDate);
Log.d(TAG, "New Date is : " + myDate);

3)输出:

Old formatted Date : 11-12-2018
New Date is : 2018-12-11