当前位置: 首页 > 知识库问答 >
问题:

SimpleDateFormat返回无效日期

方和顺
2023-03-14

我正面临一个前所未有的奇怪问题。我有一个以毫秒为单位的日期,希望将其显示为可读的日期。这是我的代码:

if (validUntil == 0) {
  return activity.getResources().getString(R.string.forever);
} else {
  Date startDate = new Date(validFrom);
  Date endDate = new Date(validUntil);
  if (startDate.compareTo(endDate) < 0) {
    String date = sdf.format(startDate) + " - " + sdf.format(endDate);
    return date;
  } else if (startDate.compareTo(endDate) == 0) {
    return activity.getResources().getString(R.string.forever);
  }
}

如你所见,我只想创建一个显示时间跨度的字符串。当我调试代码时,日期对象包含正确的值,而sdf。格式(…) 给了我一个无效的日期。

例子:

  • startdate以毫秒为单位:1375017555000

我得到了一个类似的结束日期的结果。

我做错了什么?


共有3个答案

淳于鹏
2023-03-14

看起来你的日期格式字符串不正确。这个作品:

public static void dateFormat(){
        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
        System.out.println(format.format(new Date()));
    }

结果:

2013-07-29

微生毅
2023-03-14

你得到的是几分钟而不是几个月。你的模式应该是这样的:“dd.MM.yyyy”

鲜于致远
2023-03-14

可能您似乎使用了mm来表示,但它应该是MM。看看留档。

我一年中有一个月

M分钟以小时计

尝试:

SimpleDateFormat sdf = new SimpleDateFormat("dd.MM.yyyy");
 类似资料:
  • 我想验证用户输入的日期是否有效,格式是否正确。我使用这个块来检查用户的输入,但是当我输入无效日期时,print语句会给我奇怪的输出。 当是时,它打印

  • 我尝试解析时间格式化字符串,现在当我解析字符串“2014-01-07 95:25:37”时,它返回一个日期,而不是抛出ParseException。谁知道如何让它抛出异常。谢谢乔治。 输出:

  • 问题内容: 我想知道为什么’Y’返回2019,而’y’返回2018在SimpleDateFormat: System.out.println(new SimpleDateFormat(“Y”).format(new Date())); // prints 2019 System.out.println(new SimpleDateFormat(“y”).format(new Date())); /

  • 问题内容: 我想要以毫秒为单位的当前时间,然后以12小时格式存储它,但是通过这段代码,我得到了24小时格式时间。 有人可以建议修改以获得期望的结果吗? 问题答案: 更改到作为 请注意-将为您提供 分钟 而不是 月份 。

  • 我在使用Java客户端库(google-api客户端版本1.13.2-beta,google-api服务-日历版本v3-rev 26-1.13.2-beta)对Google日历API v3进行身份验证时遇到问题。 我们有一个marketplace应用程序,安装该应用程序应为其提供读取(和写入)Google日历事件所需的凭据。 我们使用2腿OAuth 1.0,带有Hmac,这意味着不需要代币。这正是

  • 问题内容: 我正在尝试使用Java的SimpleDateFormat来解析带有以下代码的日期字符串。 我期待一些解析错误。但有趣的是,它打印以下字符串。 无法推理出来。有人可以帮忙吗? 谢谢 问题答案: 已将其解析为 月份 号2011,因为month()是日期模式的第一部分。 如果将2011个月加到28年,则得到195年。 2011个月是167年零7个月。七月是第七个月。您将02指定为日,将28指