這裏是更新的代碼從這個運行
import java.util.ArrayList;
import java.util.List;
import org.joda.time.DateTime;
import org.joda.time.Period;
public class Schedule {
// figure out some way to Store these values in a database
static List<DateTime[]> schedule = new ArrayList<DateTime[]>();
//Number of hours in a day
static DateTime startDay = new DateTime(2013, 03, 12, 8, 0, 0);
static DateTime endDay = new DateTime(2013, 03, 12, 16, 0, 0);
//Create a Period from the start and End Day dates
static Period dayPeriod = new Period(startDay, endDay);
public static void main(String[] args) {
// These events will be created on your UI
DateTime[] firstEvent = { new DateTime(2013, 03, 12, 9, 0, 0), new DateTime(2013, 03, 12, 10, 0, 0) };
DateTime[] secEvent = { new DateTime(2013, 03, 12, 11, 0, 0), new DateTime(2013, 03, 12, 12, 0, 0) };
DateTime[] thirdEvent = { new DateTime(2013, 03, 12, 12, 0, 0), new DateTime(2013, 03, 12, 13, 0, 0) };
//print the hours left, before creating events
System.out.println(dayPeriod.getHours() + " : " + dayPeriod.getMinutes() + " : " + dayPeriod.getSeconds());
//Call a method to validate them
validateAndAdd(firstEvent);
validateAndAdd(secEvent);
validateAndAdd(thirdEvent);
//print the hours left after creating events
System.out.println(dayPeriod.getHours() + " : " + dayPeriod.getMinutes() + " : " + dayPeriod.getSeconds());
}
public static void validateAndAdd(DateTime[] event) {
//Subtract the event period from the Day Period
dayPeriod = dayPeriod.minus(new Period(event[0], event[1]));
schedule.add(event);
}
}
輸出
8 : 0 : 0
5 : 0 : 0
然而
,如果從運行改變firstEvent到
DateTime[] firstEvent = { new DateTime(2013, 03, 12, 9, 30, 0), new DateTime(2013, 03, 12, 10, 0, 0) };
輸出
8 : 0 : 0
6 : -30 : 0
嗨,讀你的問題。在我看來,這是一個簡單的邏輯問題。似乎你不需要任何東西。除非我誤解你的問題。你只需要維護一個以每天小時數開始的靜態計數器,並且當用戶創建新事件時,可以從計數器中加上和減去小時。 – greenkode 2013-03-12 06:58:34
@greenkode - 無靜態。用戶需要保存整個時間表,以便他可以回來查看他過去在做什麼。每天的時間可以變化 - 上午10點至下午4點,上午9點至下午1點等 – 2013-03-12 07:03:56
我想你需要一個數據結構:一個開始時間,一個結束時間和一個字符串來標記事情要做。對? – longhua 2013-03-12 07:22:41