Конвертировать строку в дату, но я получаю сегодня вместо

Я хочу преобразовать данную строку из JSON в формате "ГГГГ-ММ-ДД ЧЧ: ММ: СС" в дату, чтобы я мог преобразовать ее в календарь и, наконец, получить мельницы с этой конкретной даты и дня. но я просто получаю сегодня вместо данной даты

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;



    }

3 ответа

Решение

Вы должны вычесть today_date от твоего specified 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

Ваш SimpleDateFormat имеет формат, отличный от строки, которую вы пытаетесь проанализировать (ему не хватает пробела '' после dd. Я предполагаю, что dateFormat.parse() сгенерирует исключение, поэтому ваш convertDate сохранит значение, назначенное с помощью new Date(), которая сейчас является датой.

Формат в вашем коде отличается от формата, который вы хотите:

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

и вы хотите это:

SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); 
Другие вопросы по тегам