我将日期作为这样的字符串
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”
答案 0 :(得分:3)
您可以通过3种方式执行此操作。首先使用SimpleDateFormat
和Date
,其次使用DateTimeFormatter
和LocalDate
,然后使用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");
第一个格式化程序是我们的旧日期格式,第二个是我们将旧日期转换成的新格式。
好的,现在就使用它们吧!
现在,我们通过将LocalDate
与dateString
对象一起解析,使用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