重新格式化日期使用Java

时间:2017-12-07 06:47:27

标签: java date

这是我在线面试中遇到的问题

Date formatting interview question

input format 输出格式类似于

2052年10月20日转为2052-10-20。

1933年6月6日转为1933-06-06。

output format

  

任何人都可以写一个方法来返回一个字符串数组,其中每个索引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处理错误所以有任何其他方式编写函数来提供输出

1 个答案:

答案 0 :(得分:0)

"d MMMM yyyy"需要使用当地语言的月份,尝试将SimpleDateFormat的区域设置设置为英语。此外,没有必要删除" st",试试"d'st' MMMM yyyy"