3

我经常需要操纵时间。Calendar 类非常适合处理日期和时间,但我似乎找不到一种简单的方法来将小时、分钟和秒等元素存储到某种结构中。从字符串到实际整数似乎需要进行大量转换。我总是可以创建自己的类并将元素存储到字段中,但如果存在提供更多功能(添加时间等)但保持存储和访问简单的类会更好。我正在寻找这样的东西:

Time time = new Time();
time.parse("13:30:15");
t.Hour = 13;
t.Minute = 30;
t.Second = 15;

是否存在任何 Java 类可以做这样简单的事情。这就是我现在的做法。多么可怕的代码量只是为了解析小时和分钟:

String time = "17:30";

TimeInfo timeInfo = new TimeInfo();
SimpleDateFormat df = new SimpleDateFormat("HH:mm");
Date d = df.parse(time);

Calendar calendar = Calendar.getInstance();
calendar.setTime(d);

timeInfo.Hours = calendar.get(Calendar.HOUR_OF_DAY);
timeInfo.Minutes = calendar.get(Calendar.MINUTE);
timeInfo.Seconds = calendar.get(Calendar.SECOND);

class TimeInfo
{
  public int Hours;
  public int Minutes;
  public int Seconds;
  public boolean Is24HourFormat;
}
4

4 回答 4

3

JodaTime是帮助轻松操纵时间的外部库之一。您可以添加时间。还要找出时间之间的差异。

您可能还想检查jodatime lib 中的概念interval和概念之间的区别。duration[所以帖子]

有关更多信息,请参阅其 javadoc

于 2013-02-20T12:18:22.617 回答
2

试试这个方法

Calendar cal = Calendar.getInstance();
cal.set(Calendar.HOUR_OF_DAY,17);
cal.set(Calendar.MINUTE,30);
cal.set(Calendar.SECOND,0);
cal.set(Calendar.MILLISECOND,0);

Date d = cal.getTime();
SimpleDateFormat f =new SimpleDateFormat("hh:mm:ss aa");
System.out.println(f.format(d));
于 2013-02-20T12:22:21.120 回答
1

我认为它java.util.Calendar可以为您提供所需的一切。看看Calendar#set()

public final void set(int year, int month, int date, int hourOfDay, int minute, int second)

设置字段 YEAR、MONTH、DAY_OF_MONTH、HOUR、MINUTE 和 SECOND 的值。保留其他字段的先前值。如果不需要,请先调用 clear()。

于 2013-02-20T12:14:24.923 回答
0

我更喜欢使用 Commons Lang 的 DateUtils。这与 Calendar 和 DateFormat(SimpleDateFormat) 一起应该足以满足 Java 中的所有日期要求

于 2013-02-20T12:45:40.473 回答