簡體   English   中英

從日歷創建自定義日期對象?

[英]Creating a custom Date object from Calendar?

我需要創建一個自定義Date對象。 我得到24小時格式的用戶輸入,如hh:mm,即17:49。 我想將小時和分鍾分別設置為17和49,分別按照當前時間保留月,年,日等其他詳細信息。例如,如果今天是2014年12月16日,時間是16:00,那么我想要一個日期對象為2014年12月16日,時間為17:49。 我知道我可以使用棄用的apis來做到這一點,但是我不想使用它們。我需要日期對象,因為我需要將它傳遞給java計時器,因為java計時器不支持任何日歷對象。

用戶輸入以字符串形式出現,我可以使用new SimpleDateFormat(HH:mm)構造函數解析該字符串。 我嘗試使用Calendar.set apis但沒有成功。

有人可以就如何進行提供一些指導。

PS。 對不起,我不能用Joda時間:)

編輯

由於不推薦使用getHours()getMinutes()並且已分別用Calendar.HOUR_OF_DAYCalendar.MINUTE替換,因此您可以使用中間日歷對象或將YEARDAY設置為當前值。


但是有一個問題,如果你像24:01一樣輸入第二天的小時,它將不會移動到第二天。 前面的答案,拆分字符串正確地溢出。


public static void main(String[] args) throws ParseException {
    final SimpleDateFormat simpleDateFormat = new SimpleDateFormat("HH:mm");
    final String timeInterval = "12:01";
    Date date = simpleDateFormat.parse(timeInterval);
    final Calendar calendar = Calendar.getInstance(); //calendar object with current date
    calendar.setTime(date); //set date with day january 1 1970, this is because you parsed only the time part, the date objects assumes you start from it's lowest value, try a System.out.println(date) before this to see.
    calendar.set(Calendar.YEAR, Calendar.getInstance().get(Calendar.YEAR));
    calendar.set(Calendar.DATE,Calendar.getInstance().get(Calendar.DATE));
    calendar.set(Calendar.MONTH, Calendar.getInstance().get(Calendar.MONTH))
    date = calendar.getTime();
    System.out.println(date);
}

您可以使用Calendar設置時間,然后使用.getTime()方法提取日期,該方法返回java.util.Date

我們的想法是根據分隔符將你的字符串分成兩部分:

然后只需初始化日歷並使用這些值設置小時和分鍾。

public static void main(String[] args) throws ParseException {
    final String userInput = "17:49";
    final String[] timeParts=userInput.split(":");
    Calendar cal=Calendar.getInstance(); //current moment calendar
    cal.set(Calendar.HOUR_OF_DAY, Integer.parseInt(timeParts[0]));
    cal.set(Calendar.MINUTE, Integer.parseInt(timeParts[1]));
    cal.set(Calendar.SECOND,0); //if you don't care about seconds
    final Date myDate=cal.getTime(); //assign the date object you need from calendar
    //use myDate object anyway you want ...
    System.out.println(myDate);
}

以下代碼工作正常,但我不想使用任何已棄用的api。

...
...
String timeInterval = "18:01";
Date date = simpleDateFormat.parse(timeInterval);
Calendar calendar = Calendar.getInstance();

calendar.set(Calendar.HOUR_OF_DAY, date.getHours());
calendar.set(Calendar.MINUTE, date.getMinutes());
date = calendar.getTime();

System.out.println(date);
...
...

暫無
暫無

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

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