java - 使用 SimpleDateFormat 将日期时间值转换为预期值

标签 java simpledateformat dataformat

我在使用 SimpleDateFormat (java) 将日期时间值转换为预期值时遇到问题,我的预期格式为 MM/yyyy,并且我只想将 2 个值转换为 1 种格式

  1. 例如 MM-yyyy 05-2012
  2. yyyy-MM 例如 2012-05

输出为 05/2012。

我实现了如下所示的内容

String expiry = "2012-01";
try {
    result = convertDateFormat(expiry, "MM-yyyy", expectedFormat);
} catch (ParseException e) {
    try {
        result = convertDateFormat(expiry, "yyyy-MM", expectedFormat);
    } catch (ParseException e1) {
        e1.printStackTrace();
    }
    e.printStackTrace();
}

private String convertDateFormat(String date, String oPattern, String ePattern) throws ParseException {
    SimpleDateFormat normalFormat = new SimpleDateFormat(oPattern);
    Date d = normalFormat.parse(date);
    SimpleDateFormat cardFormat = new SimpleDateFormat(ePattern);
    return cardFormat.format(d);
}

现在,返回值是6808,我不知道为什么。

请任何人帮助我解决这个案子。

最佳答案

添加SimpleDateFormat#setLenient()到您的 convertDateFormat 方法:

private String convertDateFormat(String date, String oPattern, String ePattern) throws ParseException {
    SimpleDateFormat normalFormat = new SimpleDateFormat(oPattern);
    normalFormat.setLenient(false); /* <-- Add this line -- */
    Date d = normalFormat.parse(date);
    SimpleDateFormat cardFormat = new SimpleDateFormat(ePattern);
    return cardFormat.format(d);
}

如果日期不正确,将会导致convertDateFormat失败。

这里有详细解释:http://eyalsch.wordpress.com/2009/05/29/sdf/

关于java - 使用 SimpleDateFormat 将日期时间值转换为预期值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13342025/

相关文章:

java - 四元数的作用类似于欧拉

java - 在运行时评估一系列 boolean 条件是否有效

java - Java 中弃用的 Date 方法?

java - NumberFormat 解析问题

javascript - jQuery从字符串更改数据格式

r - 如何在命令行上将 .dat + .sps 转换为 .sav

java - 带程序的嵌套循环, boolean 数组?

java - 用带有斜杠的字符串变量替换硬编码字符串

Java Simpledateformat Parse - 返回错误的日期时区问题?

android - 简单的日期格式。日期解析