moins 1 heure à DateTime en utilisant Joda Time
Je veux juste soustraire 1 heure à partir d'un DateTime
j'ai essayé de regarder sur Google et j'ai trouvé qu'il existe une méthode appelée moins que prend un exemplaire de la date et de prendre une durée spécifique, ici: http://www.joda.org/joda-time/apidocs/org/joda/time/DateTime.html#minus(long)
Mais je ne sais pas comment l'utiliser et je peux pas trouver un exemple sur l'internet.
Voici mon code:
String string1 = (String) table_4.getValueAt(0, 1);
String string2= (String) table_4.getValueAt(0, 2);
DateTimeFormatter dtf = DateTimeFormat.forPattern("hh:mm a").withLocale(Locale.ENGLISH);
DateTime dateTime1 = dtf.parseDateTime(string1.toString());
DateTime dateTime2 = dtf.parseDateTime(string2.toString());
final String oldf = ("hh:mm a");
final String newf= ("hh.mm 0");
final String newf2= ("hh.mm a");
final String elapsedformat = ("hh.mm");
SimpleDateFormat format2 = new SimpleDateFormat(oldf);
SimpleDateFormat format2E = new SimpleDateFormat(newf);
Period timePeriod = new Period(dateTime1, dateTime2);
PeriodFormatter formatter = new PeriodFormatterBuilder()
.appendHours().appendSuffix(".")
.appendMinutes().appendSuffix("")
.toFormatter();
String elapsed = formatter.print(timePeriod);
table_4.setValueAt(elapsed,0,3);
DecimalFormat df = new DecimalFormat("00.00");
System.out.println(dateTime1);
table_4.setValueAt("", 0, 4);
table_4.setValueAt("", 0, 5);
Des Données De L'Échantillon:
dateTime1: 08:00 AM
dateTime2: 05:00 PM
la période de 9 heures. mais je veux qu'il soit de 8 heures seulement parce que je veux soustraire de la pause déjeuner, dans mon programme.
j'ai essayé avec ce code à la con:
dateTime1.minus(-1)
J'ai aussi essayé d'analyse string1
à double afin que je puisse le soustraire par un.
double strindtoD = Integer.parseInt(string1);
J'ai aussi essayé de faire un autre DateTime
et la période d'utilisation pour obtenir la différence des deux temps
String stringOneHour = ("01:00 AM");
DateTime dateTime3 = dtf.parseDateTime(stringOneHour.toString());
Period timePeriod = new Period(dateTime3, dateTime1);
source d'informationauteur Maguzu
Vous devez vous connecter pour publier un commentaire.
Suffit d'utiliser:
C'est documentée dans l'API.
Noter que
DateTime
objets sont immuablesde sorte que le fonctionnement seul n'a aucun effet. Vous devez affecter le résultat de cette méthode à un objet (ou remplacer):Comment obtenir un
Period
de la différence entre les deuxDateTime
s, vous devez d'abord passer par unInterval
:Lien à un post expliquant pourquoi il est à la fois
Period
etInterval
.Note de côté: Joda Time utilise BEAUCOUP de indirections dans son API; en tant que telle lecture de la Javadoc n'exige pas seulement pour lire les méthodes d'une classe, mais aussi de regarder la liste des méthodes héritées de tous les héritées des classes abstraites et des interfaces; par exemple, un
DateTime
est aussi unReadableInstant
. Un vous vous habituez à elle, cependant, c'est un jeu d'enfant.Si vous utilisez une ancienne version de org.joda.temps.DateTime ensuite, vous pouvez utiliser le signe moins(ReadablePeriod période) méthode comme ceci
où la Période accepte int heures, int minutes, int secondes, int millis paramètres
Par l'aide de la Calandre objet de classe, vous pouvez utiliser cette méthode pour enlever des heures.
cal.add(Calendar.HOUR_OF_DAY, -numberOfHours);
et aussi ici est un parfait exemple lien