2014-09-20 190 views
0

我想讓我的startTime和endTime使用日曆,以便我可以相應地使我的網址。我需要將我的startTime作爲昨天午夜日期2014/09/19 00:00和今天午夜日期的endTime 2014/09/20 00:00如何使用日曆生成開始和結束時間?

因此,每當我運行我的程序時,它應該生成我的startTime作爲昨天午夜時間和endTime作爲我的程序運行時的午夜。

我有我的下面的代碼,但它得到startTime作爲2014/09/20 00:00和endTime作爲2014/09/20 16:00如果我現在正在運行我的程序。

private static final DateFormat df = new SimpleDateFormat("yyyy/MM/dd HH:mm"); 

Calendar startDate = new GregorianCalendar(); 
startDate.set(Calendar.MINUTE, 0); 
Calendar endDate = (Calendar) startDate.clone(); 
startDate.set(Calendar.HOUR_OF_DAY, 0); 

String startTime = df.format(startDate.getTime()); 
String endTime = df.format(endDate.getTime()); 

我在做什麼錯?

+0

將小時,分鐘和秒設置爲0 – MadProgrammer 2014-09-20 23:26:16

回答

1

請嘗試以下操作。

Calendar startDate = new GregorianCalendar(); 
    startDate.set(Calendar.MINUTE, 0); 
    startDate.set(Calendar.HOUR_OF_DAY, 0); 
    startDate.add(Calendar.DAY_OF_MONTH, -1); 
    String startTime = df.format(startDate.getTime()); 
    System.err.println(startTime); 

    Calendar endDate = (Calendar) startDate.clone(); 
    endDate.add(Calendar.DAY_OF_MONTH, 1); 
    String endTime = df.format(endDate.getTime()); 
    System.err.println(endTime); 

它應該做的工作(在2014年9月21日上午01時50分):

2014/09/20 00:00 
2014/09/21 00:00 
+0

謝謝kraal。在我的情況下,它應該是反對,startTime我得到'2014/09/20 00:00',但它應該是'2014/09/19 00:00',因爲今天的日期對我來說是9月20日和endTime我得到作爲'2014/09/21 00:00',但應該是'2014/09/20 00:00' – john 2014-09-20 23:42:04

0

日期不總是從00:00:00

兩個問題另一個答案假定一天中的第一個時刻(「午夜」)是00:00:00:00。由於夏令時和其他可能的異常情況,並非總是如此。

時區

這兩個問題和其他答案都忽略了時區問題。確定日期取決於時區。通常最好明確指定預期的時區。

喬達時間

下面是使用Joda-Time 2.4庫來回答這個問題,同時解決上述兩個問題的一些示例代碼。

DateTimeZone timeZone = DateTimeZone.forID("America/Montreal"); 
DateTime now = DateTime.now(timeZone); 
DateTime todayStart = now.withTimeAtStartOfDay(); 
DateTime tomorrowStart = now.plusDays(1).withTimeAtStartOfDay(); 

Plus Joda-Time有三個類來表示一段時間:間隔,週期和持續時間。

Interval today = new Interval(todayStart, tomorrowStart); 
相關問題