2014-06-14 49 views
0

我想将JSON格式为“YYYY-MM-DD HH:MM:SS”的给定字符串转换为日期,以便将其转换为日历并最终获得工厂从特定日期到日期。 但我今天拿到,而不是给定日期的将字符串转换为日期,但我今天得到

public static String getGameRemainedTime(String date){ 

     Log.i("TIME", date); 

     SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); 
     Date convertedDate = new Date(); 
     try { 
      convertedDate = dateFormat.parse(date); 
     } catch (ParseException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 


     Log.i("TIME", convertedDate+""); 

     Calendar game_date = Calendar.getInstance(); 
     game_date.setTime(convertedDate); 
     Calendar today = Calendar.getInstance(); 


     long gamedate_stamp = game_date.getTimeInMillis(); 
     long today_stamp = today.getTimeInMillis(); 

     Log.i("TIME", today_stamp+"-"+gamedate_stamp); 




     long diff = gamedate_stamp - today_stamp; 

     long day = diff/(1000 * 24 * 60 * 60); 

     long hour = (diff -(1000 * 24 * 60 * 60))/(1000 * 60 * 60); 

     long mins = ((diff -(1000 * 24 * 60 * 60))/(1000 * 60 * 60))/(1000 * 60); 



     Log.i("TIME", day+"-"+hour+"-"+mins); 


     return day+"-"+hour+"-"+mins; 



    } 
+0

普莱舍展示样品日期“,convertedDate +”“);打印是打印? –

+0

什么呢Log.i(“TIME –

+0

使用yyyy-MM-dd HH:mm:ss代替yyyy-MM-ddHH:mm:ss – cracker

回答

1

您需要从specified date减去today_date就是为什么你得到错误的结果。

试图改变

long diff = gamedate_stamp - today_stamp; 

long diff = today_stamp- gamedate_stamp ; 

编辑:

public static String getGameRemainedTime(String date) throws java.text.ParseException{ 

    Log.i("TIME", date); 

    SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); 
    Date convertedDate = new Date(); 
    try { 
     convertedDate = dateFormat.parse(date); 
    } catch (ParseException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 


    Log.i("TIME", convertedDate+""); 

    Calendar game_date = Calendar.getInstance(); 
    game_date.setTime(convertedDate); 
    Calendar today = Calendar.getInstance(); 


    long gamedate_stamp = game_date.getTimeInMillis(); 
    long today_stamp = today.getTimeInMillis(); 

    Log.i("TIME", today_stamp+"-"+gamedate_stamp); 




    long diff = today_stamp - gamedate_stamp; 


    long day = diff/(24 * 60 * 60 * 1000); 

    long hour = diff/(60 * 60 * 1000); 

    long mins = diff/(60 * 1000);; 



    Log.i("DAY: ", " " + day); 
    Log.i("HOUR: ", " " + hour); 
    Log.i("MINUTES", " " + mins); 

    return day+"-"+hour+"-"+mins; 

} 

试试这个在您的oncreate();

getGameRemainedTime("2014-5-16 10:34:22"); 

结果:

06-14 10:37:11.891: I/DAY:(1270): 29 
06-14 10:37:11.891: I/HOUR:(1270): 696 
06-14 10:37:11.891: I/MINUTES(1270): 41762 
您收到这将是很好的那种方式,更容易让我们看看你的代码
+0

那么为什么我剩下的一天,小时和分钟是错误的。例如今天是2014-5-14,比赛日期是2014-5-16。并finnaly我的回报结果是:148-3546-0 – Kenji

+0

@enji您的日期和分钟的计算是错误的,请参阅我的编辑 –

+0

谢谢,但这是不正确的。我想在几天和几小时内保持时间,而不是几天或一小时或一分钟。 – Kenji

0

你的SimpleDateFormat具有从你试图解析字符串(它缺少DD后的空间'。我猜dateFormat.parse不同的格式()将抛出一个异常,那么您convertedDate将保持与new Date()分配的价值,这是迄今为止现在

+0

缺少的空间只是我的许多类型的许多trings。我第一次运行代码就像:“yyyy-MM-dd HH:mm:ss” – Kenji

0

在你的代码的格式是不同的形式,你想要的格式:

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

和你想要这个:

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

是我的algorytm计算剩余时间是否正确? – Kenji