如何用Java表示一天中的时间(即19:00)?

如何用Java表示一天中的时间(即19:00)?,java,jodatime,Java,Jodatime,用Java表示时间的正确方法是什么 例如:09:00、19:30等 基本上,这是一天中与实际日期/天没有关联的时间。通常,当不需要显示它时,会使用long 请参阅System.currentTimeMillis()。您已经用jodatime标记了它 存储一天中某个时间的Joda时间类型为。查看Joda时间。试试这个: Calendar cal = Calendar.getInstance(); cal.get(Calendar.HOUR_OF_DAY); cal

用Java表示时间的正确方法是什么

例如:09:00、19:30等


基本上,这是一天中与实际日期/天没有关联的时间。

通常,当不需要显示它时,会使用long


请参阅System.currentTimeMillis()。

您已经用jodatime标记了它

存储一天中某个时间的Joda时间类型为。查看Joda时间。

试试这个:

Calendar cal = Calendar.getInstance();

        cal.get(Calendar.HOUR_OF_DAY);
        cal.get(Calendar.MINUTE);

就像Eng.Fouad建议的那样,您仍然应该使用Date对象。这样,您仍然可以访问所有用于日期对象的实用程序。只要忽略它的日期部分,无论何时你提出它

Date date = new Date();
DateFormat df = new SimpleDateFormat("hh:mm");
String timeOfDay = df.format(date); // ex: "18:00"
或者创建一个特定的时间

Calendar cal = Calendar.getInstance();
cal.set(Calendar.HOUR_OF_DAY, 18);
cal.set(Calendar.MINUTE, 00);
DateFormat df = new SimpleDateFormat("hh:mm");
String timeOfDay = df.format(cal.getTime()); // "18:00"

您听说过吗?使用库中的
LocalTime
。@Eng.Fouad:问题根本没有提到解析或格式化文本。它只是讨论了表示value.System.currentTimeMillis的最佳方式。正如我所说,表示一天中的时间是一种非常糟糕的方式,因为它不应该显示出来。我认为“没有日期”是指没有java.util.date。所以,有点太快了,不会给我坏分数吧?:-)例如:09:00、19:30等。他想以人类可读的格式显示时间,但不带日期。@SotiriosDelimanolis:没有迹象表明这里实际上需要字符串转换。OP只是询问使用哪种表示法——我假设09:00和19:30是要表示的数据的示例,而不是要显示的字符串。(当然,一旦获得了正确的表示形式,就可以构建字符串…)不管字符串转换与否,使用currentTimeMillis表示一天中的某个时间就像使用日期对象一样,更糟糕的是。您仍然需要日历将其转换为小时和分钟。不,您绝对不应该使用
日期
对象。这是错误的表述。
Date
对象表示时间上的一个瞬间,仅此而已。(名字不好。)Joda Time有一种专门针对这种情况的类型——这是正确的方法。JavaAPI从根本上被破坏了,因为它没有提供足够的类型来表示日期/时间工作中自然出现的不同类型的值。还要注意的是,如果您确实使用了
SimpleDataFormat
,您需要更加注意模式-您给出的模式在使用12小时时钟时永远不会产生“18:00”。@jarnbjo正如API文档所说,
LocalTime
表示没有时区的时间,因此它与DST更改无关。这只是一天中的某个时间,不是特定的一天。Joda Time有很多不同的日期和时间类,用于不同的目的。我同意Joda有很多类,而且它们的文档记录也同样糟糕。LocalTime的API文档还说“LocalTime的计算是使用时间顺序执行的。对于所有计算,该时间顺序将在内部设置为UTC时区。”,这与您的API文档片段部分矛盾。因此,即使LocalTime不直接引用时区,它也会引用一个年表,而年表引用UTC。时间顺序扮演什么角色?如果LocalTime不可知,为什么提到时间顺序将设置为UTC?