java - 如何转换序数格式的日期 1st March 1994?

标签 java date-format

我想要按以下格式给出日期格式:1990 年 3 月 1 日。日期格式应为 YYYY-MM-DD。我有以下代码。它给了我一个无法解析的日期。由此我可以理解,这不是格式化该日期的正确方法,因为它不是有效的模式。

public class DateFormattingTest {
    public static void main(String[] args) throws ParseException {
        String dateString = "1st March 1984";

        dateString = dateString.replaceFirst("[a-zA-Z]{2}","") ;
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("d MMMM yyyy");
        Date rightNow = simpleDateFormat.parse(dateString);
        SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
        String formattedDate = dateFormat.format(rightNow);
        System.out.println(formattedDate);
    }
}

我也修改并寻找了日期格式模式。我找不到与此模式“1st March 1990”相关的内容。我不需要这个问题的示例代码。我想知道我在这里做错了什么?有人可以建议一种解析此类日期的方法吗?

谢谢。

最佳答案

您遇到了三个问题。

  • 首先,您尝试使用 YYYY-MM-DD 格式解析日期。这不是您的数据格式,这就是解析失败的原因。
  • 其次,您期望 Date 对象保留有关特定格式的信息。事实并非如此。相反,您可以从一种文本格式解析为 Date,然后使用另一种 DateFormat(具有所需的输出格式)来格式化 Date转换为字符串Date.toString() 将始终使用相同的格式,无论您如何得出Date
  • 第三,您的 YYYY-MM-DD 格式并不是您真正想要的 - 您需要 yyyy-MM-ddYYYY 是“星期”,DD 是“一年中的某天”。

我不知道有任何 SimpleDateFormat 方法可以处理输入字符串的序数部分(“1st”、“2nd”等) - 您可能需要添加一些努力将其剥离。获得诸如“1 March 1990”之类的值后,您可以使用 d MMMM yyyy 模式通过 SimpleDateFormat 进行解析。确保正确设置时区和区域设置。

关于java - 如何转换序数格式的日期 1st March 1994?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26306797/

相关文章:

php - 我如何在php中获取 "yyyy-MM-ddTHH:mm:ss.fffZ"的格式?

java - 如何将枚举发送到方法?

java - 使用 If 或 Switch 语句更改交通信号灯

java - 如何在单击 Android 中的 Firestore 时删除 ListView 文档?

java - 为什么我不能增加返回值?

java - 当 dateformat 解析和格式化方法不对称时?

javascript - NodeJS 日期格式不起作用

java - Jar 文件找不到图像目录

Jmeter 非 GUI 模式时间戳日期格式

javascript - jQuery 日期格式 [今天/明天/昨天/月-日] - 无法正常工作