Comment faire pour obtenir l'heure en format de chaîne de caractères en Java? “aaaa.MM.dd.HH.mm.ss”
Comment obtenir le timestamp au format de chaîne de caractères en Java? "aaaa.MM.dd.HH.mm.ss"
String timeStamp = new SimpleDateFormat("yyyy.MM.dd.HH.mm.ss").format(new Timestamp());
C'est ce que j'ai, mais Timestamp() nécessite un paramètres...
- preparedStatement.setTimestamp(1, nouveau Timestamp(Système d'.currentTimeMillis()));
- Quelle erreur avez-vous?
- Pour info, le terriblement gênant de longue date du temps des classes comme
SimpleDateFormat
etjava.sql.Timestamp
sont maintenant héritage, supplantée par la java.de temps les classes intégré dans Java 8 et les versions ultérieures. Voir Tutoriel Oracle.
InformationsquelleAutor user3388884 | 2014-04-14
Vous devez vous connecter pour publier un commentaire.
Remplacer
avec
car il n'y a pas de constructeur par défaut pour
Timestamp
, ou vous pouvez le faire avec la méthode:java.util.Date
etjava.sql.Timestamp
sont maintenant héritage, supplantée par la java.temps les classes intégré dans Java 8 et les versions ultérieures. Voir Tutoriel par Oracle.Utilisation
java.util.Date
classe au lieu d'Horodatage.Cela vous aidera à la date actuelle dans le format spécifié.
new java.text.SimpleDateFormat("dd/MM/yyyy HH:mm:ss").format(new java.util.Date())
new SimpleDateFormat("yyyy.MM.dd HH:mm:ss").format(new Date())
;Vous pouvez faire usage de java.util.Date au lieu de Timestamp :
tl;dr
Utiliser seulement moderne java.temps classes. N'utilisez jamais la terrible héritage des classes comme
SimpleDateFormat
,Date
, oujava.sql.Timestamp
.java.temps & JDBC 4.2
La méthode moderne utilise la java.temps classes comme vu ci-dessus.
Si votre pilote JDBC est conforme avec JDBC 4.2, vous pouvez échanger directement des java.temps objets avec la base de données. Utilisation
PreparedStatement::setObject
etResultSet::getObject
.Utiliser java.sql uniquement pour les pilotes JDBC 4.2
Si votre pilote JDBC n'est pas encore conforme avec JDBC 4.2 pour le soutien de java.temps types, vous devez revenir à l'utilisation de java.sql classes.
Le stockage des données.
De récupération des données.
La java.les types sql, tels que
java.sql.Timestamp
, ne devrait être utilisé pour transférer dans et hors de la base de données. Convertir immédiatement à java.le temps des types en Java 8 et les versions ultérieures.java.time.Instant
Un
java.sql.Timestamp
des cartes pour unjava.time.Instant
, un moment sur la ligne de temps en temps UTC.Fuseau Horaire
Appliquer le désiré ou attendu de fuseau horaire pour obtenir un
ZonedDateTime
.Formaté Chaînes
Utiliser un
DateTimeFormatter
pour générer votre chaîne. Le modèle de codes sont similaires à ceux dejava.texte.SimpleDateFormat
mais pas exactement, afin de lire la doc soigneusement.Ce format particulier est ambigu quant à sa signification exacte qu'elle est dépourvue de toute indication de offset-de-UTC ou de fuseau horaire.
ISO 8601
Si vous avez tout dit dans la question, je vous suggère d'envisager l'utilisation de la norme ISO 8601 formats plutôt que de rouler votre propre. Le format standard est assez similaire à la vôtre. Par exemple:
2016-02-20T03:26:32+05:30
.La java.les classes de temps l'utilisation de ces formats standard par défaut, donc pas besoin de spécifier un modèle. Le
ZonedDateTime
classe étend le format standard en ajoutant le nom du fuseau horaire (une sage amélioration).Convertir à java.sql
Vous pouvez convertir à partir de java.temps de retour à
java.sql.Timestamp
. Extrait d'unInstant
de laZonedDateTime
.De nouvelles méthodes ont été ajoutées aux anciennes classes afin de faciliter la conversion vers/à partir de java.les classes de temps.
Sur java.temps
La java.temps cadre est intégré dans Java 8 et les versions ultérieures. Ces classes permettent d'éviter la pénible vieux héritage date du temps des classes comme
java.util.Date
,Agenda
, &SimpleDateFormat
.La Joda-Time projet, maintenant dans le mode de maintenance, conseille la migration vers le java.le temps classes.
Pour en savoir plus, consultez les Oracle Tutoriel. Et de recherche de Débordement de Pile pour de nombreux exemples et des explications. La spécification est JSR 310.
Vous pouvez échanger java.temps objets directement avec votre base de données. Utiliser un Pilote JDBC compatible avec JDBC 4.2 ou plus tard. Pas besoin de chaînes, pas besoin de
java.sql.*
classes.Où obtenir le java.les classes de temps?
La ThreeTen-Extra projet s'étend java.temps avec d'autres classes. Ce projet est un terrain d'essai pour de possibles futurs ajouts à java.temps. Vous pouvez trouver quelques classes utiles ici comme
Intervalle
,YearWeek
,YearQuarter
, et plus.Une approche plus appropriée est de spécifier des paramètres Régionaux de la région en tant que paramètre dans le constructeur. L'exemple ci-dessous utilise un NOUS Régionaux de la région. Le formatage de la Date est sensibles aux paramètres régionaux et utilise les paramètres Régionaux d'adapter l'information relative aux douanes et des conventions de l'utilisateur de la région Paramètres régionaux (la Plate-forme Java SE 7)
Locale
et fuseau horaire qui ne sont pas liés.Locale
contrôle les normes culturelles pour la mise en forme et le langage humain utilisé pour le nom du mois et du jour. Le fuseau horaire permet de régler la date-l'heure de la représentation à être approprié pour certains, en région horloge murale. Dans le cas de cette Question, la localisation n'est pas pertinente car il n'existe pas de problèmes de mise en forme avec laquelle appliquer les normes culturelles ni qu'il existe des noms de mois/jour à localiser à tout particulier la langue humaine.Vous pouvez utiliser les éléments suivants
Espère que cela aidera. Juste ma suggestion et non pas pour des points de récompense.
Utilisez code ci-dessous pour obtenir de l'actuel horodateurs:
De référence
Comment obtenir les horodatages en cours dans Java
java.sql.Timestamp
classe a été supplanté ans par le java.temps classes, avec l'adoption de la JSR 310 et JDBC 4.2. Plus précisément leInstant
etOffsetDateTime
classes. Ce qui suggèreTimestamp
en 2018 est de mauvais conseils.