【问题标题】:In Java, Can the Date type just hold MM-dd-yyyy or just hh:mm:ss?在 Java 中,Date 类型可以只保存 MM-dd-yyyy 还是只保存 hh:mm:ss?
【发布时间】:2016-07-11 13:45:10
【问题描述】:

我正在将纪元格式时间转换为正常格式,但是当我将其转换为日期时,我得到了 MM-dd-yyyy hh:mm:ss。

如果我只想选择日期或时间,我必须使用 SimpleDateFormat。但这会返回一个字符串。我想知道是否有办法使这个字符串成为日期类型。

【问题讨论】:

  • 不清楚你在问什么。请显示一些示例代码。
  • "当我将它转换为我得到的日期时,MM-dd-yyyy hh:mm:ss。"日期是日期,它没有格式
  • 日期是单个时间点,而时间是重复的时间点(每天),具体取决于时区。另一方面,day 是一个时间段,即使您只提供日、月和年,您也会得到一个时间戳(时间为 00:00:00,000)。但是,Java 8 有像 LocalTime 这样的类,这可能是您所追求的。
  • 阅读 Javadoc 以了解 Date 是什么:“Date 类表示特定的时间瞬间,精度为毫秒。”所以不,它不可能是别的东西。

标签: java


【解决方案1】:

java.util.Date 类型实际上是一个时间戳,它只不过是自 01-01-1970, 00:00:00 UTC 以来的毫秒数的包装器。 (不幸的是,类名Date 选错了)。

它不太适合只保存日期或时间值。

如果您使用的是 Java 8,请使用新的日期和时间 API(包 java.time);例如,如果您需要存储年/月/日,请使用 LocalDate,如果您只需要存储时间(小时、分钟、秒、毫秒),请使用 LocalTime

如果您使用的是 Java 7 或更早版本,请考虑使用 Joda Time 库中的等效类。

【讨论】:

  • 大部分 java.time 功能在 ThreeTen-Backport 项目中被反向移植到 Java 6 和 7。在ThreeTenABP 项目中进一步适配Android。 Joda-Time 团队建议迁移到 java.time。
【解决方案2】:

您可以将日期格式化为 MM-dd-yyyy HH:mm:ss 而不是 (MM-dd-yyyy hh:mm:ss)

https://docs.oracle.com/javase/7/docs/api/java/text/SimpleDateFormat.html

DateFormat dateformat= new SimpleDateFormat("MM-dd-yyyy HH:mm:ss");
Date date = dateformat.parse("01-25-1988 23:54:59");
System.out.println(date);
System.out.println(dateformat.format(date));
猜你喜欢
  • 1970-01-01
  • 2013-03-21
  • 1970-01-01
  • 2012-11-29
  • 1970-01-01
  • 2023-03-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多