15

如何将 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-06-24”(偏移量 4)”

4

7 回答 7

52

您需要两个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);
于 2013-06-26T15:21:56.027 回答
4

第一个问题是您对字符串和日期使用不同的分隔符。因此,您要么在 String 中执行“2013-06-24”到“2013 06 24”,要么执行 new SimpleDateFormat("dd MMM yyyy") 到 new SimpleDateFormat("dd-MMM-yyyy")。

第二个问题是您不能像这样直接更改格式,在 String 中您使用的是年-月-日格式,因此首先制作一个具有相同格式的 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);
于 2013-08-28T11:20:31.850 回答
2

改变

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

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

你必须遵循 date1 模式。然后你可以格式化你的解析日期

new SimpleDateFormat("dd MMM yyyy");
于 2013-06-26T15:18:17.217 回答
2
public String getStringFormatted(String datestring) {
    String format = "dd MM yyyy";
    SimpleDateFormat sdf = new SimpleDateFormat(format, Locale.getDefault());
    return sdf.format(new Date(datestring.replaceAll("-", "/")));
}
于 2015-10-05T17:36:26.410 回答
1
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("-", "/")));
    }
于 2019-08-07T09:23:01.757 回答
1
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);
于 2019-08-07T11:07:06.020 回答
0

字符串 idl = "2021-06-30"; 字符串 dl=null; try{ SimpleDateFormat inputFormat = new SimpleDateFormat("yyyy-MM-dd"); SimpleDateFormat outputFormat = new SimpleDateFormat("dd-MM-yyyy"); 日期日期 = inputFormat.parse(idl); dl = outputFormat.format(日期);System.out.println(dl); } catch (ParseException e1) { e1.printStackTrace(); }

于 2021-09-08T19:11:29.600 回答