2010-11-26 4 views
1

Dans mon Application Android, je suis en train de convertir date/heure en millisecondes, vérifier le code ci-dessous:Face problème lors de la conversion date à Millisecondes

public long Date_to_MilliSeconds(int day, int month, int year, int hour, int minute) 
{ 

     Calendar c = Calendar.getInstance(); 
     c.setTimeZone(TimeZone.getTimeZone("UTC")); 
     c.set(year, month, day, hour, minute, 00); 

     return c.getTimeInMillis(); 

} 

Problème: Je reçois 1290455340800 (Nov 22 14:49:00 EST 2010) pour le 22 novembre 2010 19:49:00 HNE (soit 5 heures de retour)

FYI, I am Currently in Indian TimeZone, but application can be executed from any country. so How do i exact Convert the date/time into the Milliseconds?

+0

Est-ce la partie du même problème de http://stackoverflow.com/questions/4275823/problem-while-fetching-milliseconds-from-date/4275873#4275873? –

Répondre

1

Cette ligne

c.setTimeZone(TimeZone.getTimeZone("UTC")); 

est probablement à la question. Il n'est pas nécessaire de définir le fuseau horaire car la valeur par défaut actuelle est utilisée.

+0

vous avez raison, je n'ai pas besoin de régler le fuseau horaire, j'ai supprimé le TimeZone "UTC" et maintenant son fonctionnement bien, En fait j'essayais d'insérer un événement dans le calendrier, alors maintenant l'heure est correctement insérée –

+0

Thanx pour le grand soutien –

+0

@PM - Paresh Mayani Aucun problème :) – Jim

1

Je suppose que vous appelez Date_to_MilliSeconds(22, 10, 2010, 19, 49). Votre code utilise explicitement UTC, donc il va traiter tout ce que vous lui transmettez comme UTC.

Tout comme votre previous question (ce qui me tente de fermer ce fichier en double), on ne sait pas vraiment ce que vous essayez vraiment de faire.

Si vous souhaitez indiquer une heure locale à votre méthode, vous devez spécifier un fuseau horaire local. Si vous devez utiliser une heure locale dans le fuseau horaire de l'utilisateur, essayez de définir le fuseau horaire sur TimeZone.getDefault() - bien que je m'attendrais à ce que ce soit la valeur par défaut de toute façon. Si vous souhaitez fournir une heure UTC à votre méthode, vous devez spécifier un fuseau horaire UTC (comme vous êtes ici).

Que faites-vous vraiment en essayant de faire?

+0

ya jon vous avez raison, je suis en train de tourner rond avec le problème "Timing", que dois-je faire pour faire une demande en tant que tel qu'il ne sera pas un problème de synchronisation? –

+0

@PM - Paresh: Vous devez être plus clair sur ce que vous voulez réellement dire à chaque étape - quelle est votre contribution (une heure locale dans un fuseau horaire particulier - une heure locale sans fuseau horaire spécifique - une heure UTC?) et quelle sortie vous avez besoin. –

1

Dans ce code, vous obtenez le nombre de millisecondes depuis le 01/01/1970 00:00 dans votre fuseau horaire pour le 22 novembre 19:49:00 EST 2010 dans le fuseau horaire UTC. Pourquoi définissez-vous le fuseau horaire à UTC?

+0

votre réponse Fait une lumière dans mon esprit, merci pour le soutien –

1

La différence de 5 heures est la différence entre UTC et EST. Vous pouvez utiliser DateFormat.parse() pour analyser la date d'entrée s'il s'agit d'une chaîne. Ou vous pouvez utiliser le code ci-dessus et passer le fuseau horaire désiré dans c.setTimeZone() - mettre en EST au lieu de UTC.

+0

a fait ma vie !! mais laissez-moi savoir, aurai-je un problème pendant que je vais le tester d'un autre pays que l'Inde? –

+0

Cela ne doit rien avoir à faire avec le fuseau horaire dans lequel vous exécutez l'application. Si le datetime source a un fuseau horaire, il sera analysé par 'SimpleDateFormat.parse()' ou vous l'utiliserez dans 'setTimezone()'. – cristis

0

J'utilise ceci:

public String timeToString(long time, String format) { 
    SimpleDateFormat sdf = new SimpleDateFormat(format, Locale.getDefault()); 
    sdf.setTimeZone(TimeZone.getDefault()); 
    return sdf.format(time + TimeZone.getDefault().getRawOffset() 
      + TimeZone.getDefault().getDSTSavings()); 
} 

Je pense qu'il résout les problèmes de TimeZone.

Questions connexes