【问题标题】:Calendar with no milliseconds vs Calendar with milliseconds that are 0没有毫秒的日历与毫秒为 0 的日历
【发布时间】:2018-10-17 06:53:50
【问题描述】:

我不知道如何判断 Calendar 对象是不是在没有毫秒的情况下创建的

我需要区分时间戳

2018 04 30 13:44:55 -0500
and
2018 04 30 13:44:55.000 -0500

后者显示时钟以毫秒为单位报告时间,而前者仅以秒为单位报告时间。所以在后一种情况下,我想显示“000”,但在前一种情况下,我不想。

Calendar.get(Calendar.MILLISECONDS) = 0 显然不能解决这个问题。关于如何做到这一点的任何想法?

【问题讨论】:

  • 上下文是什么?可以避免使用Calendar,并使用LocalDateTime吗?
  • 对于新的时间课程:LocalDateTime.isSupported(ChronoField.MILLI_OF_SECOND)
  • @JoopEggen 这将始终返回 true。 LocalDateTime 具有纳米级精度。总是。
  • Brian,你需要这个的场景是什么?我在想,如果您正在解析一个包含毫秒或不包含毫秒的日期时间字符串,并且您需要返回相同的字符串,那么除了您的(如我推荐的)@987654328 之外,您可能只保留该字符串@ 目的。这是多余的,但可以解决您的问题吗? (Calendar 类早已过时且设计不佳,所以我会避免这种情况。)
  • 目前我有点卡在日历上,因为我需要使用它的库。

标签: java calendar timestamp milliseconds java.util.calendar


【解决方案1】:

Calendar::isSet(int) 方法将测试是否设置了特定字段。

【讨论】:

  • 确实,new GregorianCalendar(2018, Calendar.JANUARY, 22, 23, 59, 48).isSet(Calendar.MILLISECOND) 产生 false
  • 是的,我发现并尝试了一下,它确实解决了我的问题。我还必须在堆栈溢出时做错事;我从来没有在我的电子邮件中收到任何对我的问题或 cmets 的回复的通知……尽管我相信我已经正确注册了他们……
猜你喜欢
  • 1970-01-01
  • 2014-10-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-06-30
  • 2012-11-01
  • 2011-08-29
  • 1970-01-01
相关资源
最近更新 更多