2013-08-01 3 views
0

Этот код ниже:Преобразование метку времени Unix на сегодняшний день Java

DateFormat format = new SimpleDateFormat("yyyy-MM-dd"); 
    String logTime = format.format(new Date((format.parse("2013-6-30").getTime()+25*24*3600*1000))); 
    String logTime1 = format.format(new Date((format.parse("2013-6-30").getTime()+24*24*3600*1000))); 
    System.out.println("logTime: "+logTime); 
    System.out.println("logTime1: "+logTime1); 

Это выход:

logTime: 2013-06-05 
    logTime1: 2013-07-24 

Что здесь не так?

+0

Я не уверен, что вопрос IST, но в первом случае нужно умножить на 25, во второй раз на 24. Почему? – koljaTM

+0

Я предполагаю, что он означает, что добавление 24 дней - это не проблема, но добавление 25 дней. –

+0

время 24 - это нормально, но при умножении 25 оно становится неправильной датой. – MuRong

ответ

5

У вас переполнение. Попробуйте

25L * 24*3600*1000 

так что это значение длинное. Ваша IDE должна подчеркнуть, что то, что у вас есть, будет переполняться.

enter image description here

это печатает число, которое явно неправильно.

-2134967296 

DateFormat format = new SimpleDateFormat("yyyy-MM-dd"); 
long time = format.parse("2013-6-30").getTime(); 
String logTime = format.format(new Date(time + 25L * 24 * 3600 * 1000)); 
String logTime1 = format.format(new Date(time + 24L * 24 * 3600 * 1000)); 
System.out.println("time + 25d: " + logTime); 
System.out.println("time + 24d: " + logTime1); 

печатает

time + 25d: 2013-07-25 
time + 24d: 2013-07-24 
+1

Не знал, что вы работали на реактивные мозги! ;-) (ps: netbeans не дает никаких предупреждений ... pfff) – assylias

+0

да, это точка.Спасибо – MuRong

+0

Я использую Ecipse, потому что это потому, что IDE java я думаю – MuRong