Προγραμματισμός

* Γνώση Υπολογιστών >> Προγραμματισμός >> Προγραμματισμός Java

Πώς να υπολογίσετε Ημερομηνία Διαφορά σε Java

Υπολογισμός των διαφορών μεταξύ των δύο ημερομηνιών σε Java 6.0 και νωρίτερα μπορεί να είναι απατηλά δύσκολο λόγω της ανάγκης για να φιλοξενήσει τα δίσεκτα έτη , άλμα δευτερόλεπτα , οι χρόνοι και άλλες προσαρμογές γίνονται τακτικά στο ημερολόγιο , στις περισσότερες χώρες της θερινής . Αυτό το σεμινάριο παρέχει δύο λύσεις , κάτι που δεν πρέπει να χρησιμοποιηθεί σε περιπτώσεις όπου DST ή τα δίσεκτα έτη μπορεί να προκαλέσει σοβαρά προβλήματα και μια πιο εκλεπτυσμένη επιλογή με βάση τη βιβλιοθήκη JSR - 310 . Αυτή η βιβλιοθήκη έχει προγραμματιστεί να είναι μέρος της Java API 7.0 όταν κυκλοφορήσει στα τέλη του 2010 . Ωστόσο , μπορείτε να το κατεβάσετε για χρήση τώρα . Τα πράγματα που θα χρειαστείτε
Υπολογιστών
Java
JSR - 310 ( προαιρετικά)
Η Εμφάνιση Περισσότερες οδηγίες
Χρησιμοποιώντας Java 6.0 Εργαλεία

1

Δημιουργία νέα κατηγορία με την ονομασία « DateDifferencer » και το όνομα του αρχείου " DateDifferencer.java . " Δώστε την ακόλουθη σκελετός :

/*** Αυτή η τάξη θα παρέχουν δύο μεθόδους για την εύρεση των διαφορών μεταξύ των ημερομηνιών : * - Ένας ντόπιος μέθοδο που δεν ευθύνονται για τα δίσεκτα έτη και άλλη ημερομηνία παραδοξότητες * αλλά αυτό είναι συμβατό με την τελευταία έκδοση της Java , από τις αρχές του 2010 * - . . Μια πιο εξελιγμένη έκδοση που χρησιμοποιεί την εξωτερική βιβλιοθήκη JSR - 310 , * η οποία θα πρέπει να περιλαμβάνονται σε Java 7 , που αναμένεται να κυκλοφορήσει στα τέλη του 2010 ** @ συγγραφέας Kevin Walker * /δημόσια τάξη DateDifferencer {

}

Όλα τα υπόλοιπα θα πάνε σε αυτήν την κατηγορία σκελετό . 2

Υπολογίστε τον αριθμό των χιλιοστών του δευτερολέπτου σε μια μέρα και να το αποθηκεύσετε σε μία σταθερά για μεταγενέστερη χρήση. Αυτό είναι απαραίτητο επειδή Java 6.0 και παλαιότερες εκδόσεις κατανοούν εγγενώς χρόνο σε χιλιοστά του δευτερολέπτου ή νανοδευτερόλεπτα .

/*** Ο αριθμός των χιλιοστών του δευτερολέπτου σε μια ημέρα είναι ίση με 1000 χιλιοστά του δευτερολέπτου ανά δευτερόλεπτο * 60 δευτερόλεπτα ανά λεπτό * 60 λεπτά ανά ώρα * 24 ώρες την ημέρα * /

δημόσια τελικό στατική διπλό MILLISECONDS_IN_DAY = 1000 * 60 * 60 * 24 ?
εικόνων 3

Δημιουργήστε τη μέθοδο " findDifference " . Βεβαιωθείτε ότι το σχόλιο Javadoc επισημαίνει την αδυναμία της μεθόδου για οποιονδήποτε άλλον που επιλέγει να το χρησιμοποιήσει .

/*** Αυτή η κλάση χρησιμοποιεί μια απλή μέθοδο για τον υπολογισμό της διαφοράς μεταξύ δύο ημερομηνιών . * Ωστόσο, δεν είναι άψογη . Ανακρίβειες μπορεί να προκύψουν λόγω των δίσεκτων ετών . ** @ Επιστρέφει τον αριθμό των ημερών διαφορά μεταξύ των δύο ημερομηνιών χωρίς διόρθωση για τα δίσεκτα έτη ή αλλαγές της θερινής ώρας . * /Public static double findDifference ( Ημερομηνία d1 , d2 Ημερομηνία ) {

διπλό diff = Math.abs ( d2.getTime ( ) - d1.getTime ( ) ) ?

διπλό ημέρες = diff /MILLISECONDS_IN_DAY ?

επιστρέψει ημέρες ?

}

Αυτό λειτουργεί με την εύρεση της διαφοράς μεταξύ των δύο ημερομηνιών σε όρους χιλιοστά του δευτερολέπτου . Στη συνέχεια, διαιρεί με τον αριθμό των χιλιοστών του δευτερολέπτου σε μια μέρα ( που θα υπολογίζεται στο βήμα 2 ) . Εικόνων
Χρησιμοποιώντας JSR - 310
Η

4 Τοποθετήστε το JSR - 310 Χρόνος " βάζο " το αρχείο μέσα στον ίδιο κατάλογο με το υπόλοιπο του προγράμματός σας .
5

Προσθέστε μερικές περισσότερες εισαγωγές στην κατηγορία DateDifferencer σας, ώστε να μπορείτε να έχετε πρόσβαση στη βιβλιοθήκη JSR 310 .

javax.time.Duration εισαγωγής ? javax.time.period.Period εισαγωγής ?
Η 6

Προσθέστε μια νέα μέθοδο για την κατηγορία DateDifferencer σας

/*** @ επιστρέψει ένα string . . περιγράφει τη διαφορά μεταξύ των δύο ημερομηνιών * /δημόσια στατική String findDifferenceWithJSR ( Ημερομηνία έναρξης, λήξης και ημερομηνία) { διάρκεια διάρκεια = Duration.durationBetween ( έναρξη, λήξη ) ? Περίοδος diff = Period.nanos ( duration.toNanos ( ) ) ? επιστρέψει νέα diff.toString ( ) ? }

Αυτό δημιουργεί ένα "Διάρκεια" αντικείμενο, το οποίο κατέχει η διαφορά μεταξύ των δύο ημερομηνιών . Θα μπορούσα να σταματήσω εδώ και να επιστρέψει τη διάρκεια του " toString " εντολή . Ωστόσο , αυτό παρέχει την απάντηση από την άποψη των δευτερολέπτων , η οποία δεν είναι αναγνώσιμη από τον άνθρωπο . Έτσι, στη συνέχεια, δημιουργεί ένα " Περίοδος " αντικείμενο και χρησιμοποιεί τους « toString " εντολή .
Η
εικόνων

Συναφής σύστασή

Πνευματικά δικαιώματα © Γνώση Υπολογιστών Όλα τα δικαιώματα κατοχυρωμένα