2016-06-21 2 views
-1

J'ai une date comme ça mar 21 juin 14:47:37 GMT + 05: 30 2016, que je crée moi-même. Je le crée en utilisant le calendrier. Où l'utilisateur sélectionne une date et je l'enregistre en millisecondes à partir du calendrier. Quand je l'envoie, l'envoyer, je crée à nouveau une instance de calendrier mis les millisecondes enregistrées dans et obtenir la date comme ceci:Android fuseau horaire problème, confus

Calendar calendar = Calendar.getInstance(); 
    calendar.setTimeZone(TimeZone.getDefault()); 
    calendar.setTimeInMillis(SSPreferences.getDate()); 

maintenant tout en obtenant la date du calendrier que je fais ceci:

calendar.getTime()//This is what I send to server. 

Je l'envoie au serveur, mais quand le serveur m'envoie la date, il est toujours 5,5 heures avant mon heure.

Je sais que mon heure est GMT + 5: 50. Alors, quel serveur fait de son côté? Comment envoyer la date, de sorte que je reçois la même date que j'ai envoyée au serveur.

Toute aide est appréciée. Merci

+0

Get temps UTC et rester en serveur ou millisecondes – Sreekanth

+0

« Ceci est ce que j'envoie au serveur. » - * Comment * l'envoyez-vous au serveur? –

+0

Comment envoyez-vous la date au serveur? L'envoyez-vous à un script php en utilisant httpurlconnection? Autre chose? –

Répondre

0

contrôle cette

static final String DATEFORMAT = "yyyy-MM-dd HH:mm:ss" 

public static Date GetUTCdatetimeAsDate() 
{ 
    //note: doesn't check for null 
    return StringDateToDate(GetUTCdatetimeAsString()); 
} 

public static String GetUTCdatetimeAsString() 
{ 
    final SimpleDateFormat sdf = new SimpleDateFormat(DATEFORMAT); 
    sdf.setTimeZone(TimeZone.getTimeZone("UTC")); 
    final String utcTime = sdf.format(new Date()); 

    return utcTime; 
} 

public static Date StringDateToDate(String StrDate) 
{ 
    Date dateToReturn = null; 
    SimpleDateFormat dateFormat = new SimpleDateFormat(DATEFORMAT); 

    try 
    { 
     dateToReturn = (Date)dateFormat.parse(StrDate); 
    } 
    catch (ParseException e) 
    { 
     e.printStackTrace(); 
    } 

    return dateToReturn; 
} 
0

Enfin, je résolu le problème en ajoutant/soustrayant la rawOffSet de la zone horaire.

TimeZone timeZone = TimeZone.getDefault(); 
    int offset = timeZone.getOffset(SSPreferences.getDate()); 
    WriteLog.Print("offset is "+offset); 
    long newtime = SSPreferences.getDate() + offset; 
    calendar.setTimeInMillis(newtime);