2015-11-12 100 views
0

我正在寫一個CSV,我的日曆是加倍值...我找不出問題所在。 PS:金額等於1.000.000或10.000.000。日期的唯一值

public static void CSV(String path, int amount) { 
    SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); 
    Calendar c = Calendar.getInstance(); 
    c.set(1980, 01, 01); 
    for (; set.size() < amount;) { 
     c.set(Calendar.MINUTE, c.get(Calendar.MINUTE) + 2); 
     set.add(c.getTime()); 
    } 
    Iterator<Date> it = set.iterator(); 
    for (int i = 0; i < amount; i++) { 
     csvWriter.append(dateFormat.format(it.next())); 
    } 
    ... 
} 

那麼,錯誤是上午/下午(1-12)的小時。 感謝@Teemu。

+1

「倍增值」是什麼意思? – Hua

+2

每次都不會創建'new Random()' –

+1

第一個for循環不會將唯一值放入集合中。 – Hua

回答

1

我假設你的意思是「倍增值」,因爲同一時間出現兩次。原因是您的日期格式化程序:

SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss"); 

您正在格式化小時爲'hh'。這意味着它的格式化日期爲Hour in am/pm (1-12)。所以兩個時間值實際上是唯一的,一個是AM,另一個是PM。您不提供AM/PM標記到SimpleDateFormat中,這就是爲什麼兩個時間值看起來都一樣。

如果你想distinquish的AM/PM標記格式更改爲這樣:

SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss aaa"); 

或者另一種方式是在0-23格式來格式化小時

SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); 

不知道如果我的假設是正確的,但我希望這有助於。

相關問題