当前位置: 首页 > 面试题库 >

SimpleDateFormat解析时间和日期错误的分钟和秒

冯驰
2023-03-14
问题内容

谁能告诉我这段代码有什么问题:

System.out.println(new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.sss'Z'").parse("2015-04-22T19:54:11.827Z"));

System.out.println(new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.sss'Z'").parse("2015-04-22T19:54:11.0Z"));

输出是:

Wed Apr 22 20:07:47 GMT+02:00 2015
Wed Apr 22 19:54:00 GMT+02:00 2015

当输入时间以毫秒为单位时,请注意以分钟为单位的差异。


问题答案:

对于SimpleDateFormat,毫秒格式的值包含大写S字符,而不是s秒的小写字符。

秒(秒)55

毫秒数978

它解释827为秒,并将这些秒(847秒是13分钟47秒)添加到您的值中。

使用SSS毫秒。

new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'")

顺便说一句,如果相同,则无需SimpleDateFormat多次创建。您可以创建一次,将其保存到变量中,然后parse多次调用,对于您要解析的每个日期/时间字符串一次。



 类似资料:
  • 问题内容: 我正在尝试将()解析为,但是日期却超出预期。 码: 当我从上面的代码中将返回的日期输入数据库时​​,我正确地获取了日期,但是时间始终是00:00。 问题答案: YYYY应该是yyyy

  • 问题内容: 我有字符串格式的日期,我想将其解析为使用日期。 我将其解析为: 但是奇怪的是,如果我传递的是“ 03-08- 201309 hjhkjhk ”或“ 03- 88 -2013”​​或 43 -88-201378,它不会抛出错误,而是对其进行解析。 为此,我必须编写正则表达式模式以检查日期的输入是否正确。但是为什么会这样呢? 代码: 问题答案: 您应该使用: 我不确定是否可以捕获 到 您想

  • 问题内容: 我已经编写了此示例程序,其中我想将日期转换为另一种格式。使用简单的日期格式时,我没有看到预期的日期。 我看到以下输出。第一种是使用简单的日期格式,第二种是手动翻译。 因此,如何使简单的日期格式输出与手动格式类似的值 问题答案: 看来您不能使用6位数字表示毫秒。您的程序关闭了11分17秒。660秒= 11分钟,您可以休息17秒。因此,它只能将您输入的内容从秒转换为分钟,因为它不能接受超过

  • 问题内容: 我正在使用 其中的字符串是格式。 例如,如果是40/02/2013,我将获得一个错误,而parse方法将返回Date 2013年3月12日(12/03/2013)。我在抱怨什么? 问题答案: 设置宽大处理位: 指定日期/时间解析是否宽松。使用宽大的解析,解析器可以使用试探法来解释与该对象的格式不完全匹配的输入。在严格分析的情况下,输入必须与该对象的格式匹配。 如下代码: 给出: 笔记

  • 问题内容: 有人知道为什么java.util.Caldendar中的MINUTE方法返回不正确的分钟吗? 问题答案: Calendar.MINUTE不是实际的分钟,而是一个常量索引值,该值传递到“get()”中以获取该值。例如:

  • 我尝试将字符串转换为日期。