2015-03-02 57 views
-2

我有一個用於生成隨機日期字符串的代碼。但是我發現,當我生成一個隨機時間戳時,它包含一些精度小數點到秒字段。我的SimpleDateFormat如何不包含這樣的精度值,有沒有人知道這裏有什麼問題,以及如何刪除或控制精度值?隨機時間戳的控制時間戳精度

代碼

long rangeBegin = Timestamp.valueOf("2015-01-01 00:00:00").getTime(); 
    SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); 
    Date currentDate = new Date(); 
    String currentDateString = simpleDateFormat.format(currentDate); 
    long rangeEnd = Timestamp.valueOf(currentDateString).getTime(); 
    long diff = rangeEnd - rangeBegin + 1; 
    Timestamp randomTimestamp = new Timestamp(rangeBegin + (long)(Math.random() * diff)); 

樣本輸出

randomTimestamp = 2015年2月20日2點36分〇〇秒。

由於

編輯

String randomTimestampString = String.valueOf(randomTimestamp).split("\\.")[0]; 
+0

納秒有什麼不對呢? – 2015-03-02 08:59:37

+0

請參閱輸出結尾有一個十進制.646,我不期待這個 – 2015-03-02 09:00:24

回答

0

小數點後的數字是分數精確度,即納秒。 您可以通過格式化或直接使用String.substring()方法將它們除去。

+0

謝謝,但不是我的dateformat足以限制精度? – 2015-03-02 10:06:40

+0

我不這麼認爲。從它的外觀來看,日期格式僅適用於currentDate。 – mbsingh 2015-03-04 08:19:20

0

randomTimestamp = 2015-02-20 02:36:00。

根據時間戳javadoc這646意味着精密

+0

感謝您的澄清。無論如何,我可以限制時間戳的精度? – 2015-03-02 10:04:03