这是我在线面试中遇到的问题
2052年10月20日转为2052-10-20。
1933年6月6日转为1933-06-06。
任何人都可以写一个方法来返回一个字符串数组,其中每个索引i包含转换为YYYY-MM-DD格式的日期值。
这是使用Java
将1984年3月1日转换为1984-03-01的代码import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class DateFormattingTest {
public void date(String dateString) throws ParseException {
// This Regular Expression will replace st to blank
String dateString1 = dateString.replaceFirst("[a-zA-Z]{2}", "");
//create Date Format and Parse it based on input
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("d MMMM yyyy");
Date rightNow = simpleDateFormat.parse(dateString1);
// Now create Date format for output type. and format the input
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
String formattedDate = dateFormat.format(rightNow);
System.out.println(formattedDate);
}
public static void main(String[] args) throws ParseException {
String dateString = "1st March 1984";
DateFormattingTest t = new DateFormattingTest();
t.date(dateString);
}
}
在上面的代码中,输入是硬编码的String dateString = "1st March 1984";
它给出了正确的输出
但根据问题输入应该是Day Month Year形式的字符串数组,out put应该返回格式为YYYY-MM-DD的字符串数组。我编写了类似于上面代码中的date()方法的dates()方法。在解决方法main方法处理IOException它是预先编写的main方法我们应该在main方法中传递我们的方法来返回输出但是这里我的方法是处理ParseException,它不是由给定程序中的main方法处理所以我得到ParseException处理错误所以有任何其他方式编写函数来提供输出
答案 0 :(得分:0)
"d MMMM yyyy"
需要使用当地语言的月份,尝试将SimpleDateFormat的区域设置设置为英语。此外,没有必要删除" st",试试"d'st' MMMM yyyy
"