android 将yyyy-mm-dd转换为dd mm yyyy

m1m5dgzv  于 2023-03-27  发布在  Android
关注(0)|答案(9)|浏览(244)

如何将2013-06-24转换为2013年6月24日?我使用下面的代码。

date1="2013-06-24";
SimpleDateFormat d= new SimpleDateFormat("dd MMM yyyy");

try{
date2 =  d.parse(date1);
}catch (ParseException e1) {
// TODO Auto-generated catch block
  e1.printStackTrace();
}

但是我得到这个错误“java.text.ParseException:无法解析的日期:“2013年6月24日”(偏移量4)

xxls0lw8

xxls0lw81#

您需要两个DateFormat示例:一个用于解析原始的String,另一个用于输出您想要的结果。

DateFormat inputFormat = new SimpleDateFormat("yyyy-MM-dd");
DateFormat outputFormat = new SimpleDateFormat("dd MMM yyyy");
String inputDateStr="2013-06-24";
Date date = inputFormat.parse(inputDateStr);
String outputDateStr = outputFormat.format(date);
0sgqnhkj

0sgqnhkj2#

第一个问题是,你对String和Date使用了不同的分隔符。因此,你可以在String中使用“2013-06-24”到“2013 06 24”,或者使用new SimpleDateFormat(“dd MMM yyyy”)到new SimpleDateFormat(“dd-MMM-yyyy”)。
第二个问题是,你不能像这样直接改变格式,在String中,你有year-month-date格式,所以首先用相同的格式创建一个Date对象,然后将它改为你想要的格式,如下所示:

date1="2013-06-24";

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

Date dt = format.parse(date1);

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

date2 = your_format.format(dt);
vh0rcniy

vh0rcniy3#

变更

SimpleDateFormat d= new SimpleDateFormat("dd MMM yyyy");

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

你必须遵循date1模式。然后你可以用

new SimpleDateFormat("dd MMM yyyy");
jaxagkaj

jaxagkaj4#

public String getStringFormatted(String datestring) {
    String format = "dd MM yyyy";
    SimpleDateFormat sdf = new SimpleDateFormat(format, Locale.getDefault());
    return sdf.format(new Date(datestring.replaceAll("-", "/")));
}
doinxwow

doinxwow5#

Java.时间

java.util日期-时间API及其对应的解析/格式化类型SimpleDateFormat已经过时且容易出错。2014年3月,modern Date-Time API作为Java 8标准库的一部分发布,取代了传统的日期-时间API,从那时起,强烈建议切换到java.time,现代的日期-时间API。

使用java.time * 的解决方案

java.time API基于ISO 8601 standards,不需要指定DateTimeFormatter来解析已经是ISO 8601格式的日期/时间字符串。您给定的日期字符串2013-06-24已经是ISO 8601格式。您需要DateTimeFormatter只是为了格式化将通过解析给定的日期字符串获得的LocalDate

注意:日期时间解析/格式化接口对Locale敏感,因此对never use date-time parsing/formatting APIs without a Locale敏感。
演示:

import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.util.Locale;

class Main {
    public static void main(String[] args) {
        LocalDate date = LocalDate.parse("2013-06-24");
        System.out.println(date);
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd MMM uuuu", Locale.ENGLISH);
        String formatted = date.format(formatter);
        System.out.println(formatted);
    }
}

输出

2013-06-24
24 Jun 2013

ONLINE DEMO
从**Trail: Date Time**了解有关现代日期-时间API的更多信息。

g6ll5ycj

g6ll5ycj6#

public String inputFormatget (String datestring1) {
        String format = "dd MM yyyy";
        SimpleDateFormat sdf = new SimpleDateFormat(format, Locale.getDefault());
        return sdf.format(new Date(datestring.replaceAll("-", "/")));
    }

    public String outFormatset (String datestring2) {
        String format = "dd MM yyyy";
        SimpleDateFormat sdf = new SimpleDateFormat(format, Locale.getDefault());
        return sdf.format(new Date(datestring.replaceAll("-", "/")));
    }
kadbb459

kadbb4597#

public static String formateDateFromstring(String inputFormat, String outputFormat, String inputDate){

    Date parsed = null;
    String outputDate = "";

    SimpleDateFormat df_input = new SimpleDateFormat(inputFormat, java.util.Locale.getDefault());
    SimpleDateFormat df_output = new SimpleDateFormat(outputFormat, java.util.Locale.getDefault());

    try {
        parsed = df_input.parse(inputDate);
        outputDate = df_output.format(parsed);

    } catch (ParseException e) {
    }

    return outputDate;

}

String convertedDate = formateDateFromstring(
    "yyyy-MM-dd",
    "dd/MM/yyyy",
    datestring);

updateInsuranceEventFragmentBinding.edtdate.setText(convertedDate);
mzillmmw

mzillmmw8#

下面是一个通用的方法,您可以使用它来获取所需的格式。
用法- getRequiredDateFormat(“2019-09-03”,“yyyy-MM-dd”,“dd MM yyyy”)

private String getRequiredDateFormat(String inputDate, String inputDateFormat, String outputDateFormat) {

    DateFormat inputFormat = new SimpleDateFormat(inputDateFormat);
    DateFormat outputFormat = new SimpleDateFormat(outputDateFormat);
    Date date = null;

    try {
        date = inputFormat.parse(inputDate);

    } catch (ParseException e) {
        LOGGER.error("Could not parse date {}", e.getMessage());
        return null;
    }

    return outputFormat.format(date);
}
yrdbyhpb

yrdbyhpb9#

字符串idl =“2021年6月30日”;字符串dl=空;new SimpleDateFormat(“yyyy-MM-dd”);int getName = new getName(“getName”);int n = inputFormat.parse(int n);d1 = outputFormat.format(date);System.out.println(dl);} catch(ParseException e1){ e1.printStackTrace();}

相关问题