簡體   English   中英

在Java中將時間元素存儲在結構中

[英]Storing time elements in a structure in Java

我經常需要操縱時間。 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;
}

JodaTime是一個有助於輕松操縱時間的外部庫。 你可以增加時間。 也找到時間的差異。

您還可能想要檢查intervalduration之間的差異,這些是jodatime lib中的概念。 [ SO帖子 ]

有關詳細信息,請參閱其javadoc

嘗試這種方法

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));

我認為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()。

我更喜歡使用Commons Lang的DateUtils。 這與Calendar和DateFormat(SimpleDateFormat)一起應該足以滿足Java中的所有日期要求

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM