2011-08-16 1 views
1

Pourriez-vous s'il vous plaît expliquer à moi, comment DateTime fonctionne en ce qui concerne AM/PM? Je sais que je pourrais gérer AM/PM via DateFormat et la chaîne d'analyse, mais je suis intéressé par cette méthode. Je ne peux pas comprendre ça. Parce que DateTimeZone ne se rapporte pas directement à Locale, Chronology ne le fait pas aussi. Dois-je modifier manuellement le paramètre hourOfDay en fonction des informations AM/PM dans le type 24 heures?JodaTime DateTime et la gestion des paramètres régionaux avec AM/PM

Je travaille avec un widget de forme html UI >> http request 6 paramètres, basé sur Locale (y, m, d, h, m, AM/PM)/(y, m, d, h, m) >> maintenant je voudrais créer un objet Date à partir de ces valeurs 5/6 via l'objet DateTime de JodaTime. Est-il possible sans moi de devoir convertir manuellement (y, m, d, h, m, AM/PM) en (y, m, d, h, m)?

manuellement Je ferais ça comme ça

public static Date getDateSinceUTC2(Target orderBean, TimeZone tz) { 

    int ap = orderBean.getDeadLineAmPm(); 
    int year = orderBean.getDeadLineYear(); 
    int month = orderBean.getDeadLineMonth(); 
    int day = orderBean.getDeadLineDay(); 
    int hour = orderBean.getDeadLineHour(); 
    int minute = orderBean.getDeadLineMinute(); 

    if (ap == 1) { 
     hour += 12; 
    } 

    month++; 

    DateTime dt = new DateTime(year, month, day, hour, minute, 0, 0, DateTimeZone.forID(tz.getID())); 

    return new Date(dt.getMillis()); 
} 
+0

Que voulez-vous dire par «en ce qui concerne AM/PM»? Qu'essayez-vous de faire? Je connais assez bien le temps de Joda, mais je ne peux pas dire ce que vous entendez par "manipuler" AM/PM. –

+0

Édité, la question est, est-ce que DateTime accepte uniquement le format de date non-US? – lisak

+0

"format date" est une représentation sous forme de chaîne, pas un concept "utilise AM/PM". –

Répondre

4

Tout d'abord, je commencer à l'aide LocalDateTime sauf si vous avez effectivement a obtenu un fuseau horaire.

Mais vous pouvez créer soit un DateTime ou un LocalDateTime en lui donnant une heure, puis en utilisant:

// I'm assuming amPm is 0 for am and 1 for pm 
result = original.withField(DateTimeFieldType.hourOfHalfDay(), hour) 
       .withField(DateTimeFieldType.halfDayOfDay(), amPm); 

Je pense que je personnellement probablement effectuer la conversion à « l'heure de 24 -jour "moi-même cependant.

+0

Ok, merci Jon, cette conversion manuelle que j'ai eu dans la Question est correcte, non? – lisak

+0

+ 1 pour la persévérance dans la lecture d'esprit ... mais + 1 portant des charbons à Newcastle, je crains. –

+0

@Edgar: Pas tout à fait - cela dépend de ce que vous obtenez pour minuit, ce qui est généralement représenté par "12 heures". Dans ce cas, vous voudrez * soustraire * 12, mais vous voulez quitter midi ("12 h") seul. Peut-être que l'utilisation des champs est une meilleure idée après tout :) –

Questions connexes