J'utilise Java 6, et j'ai un temps de la date actuelle en tant que chaîne, comme ceci: Cependant, il semble y avoir un bon moyen d'obtenir un horodatage de ceci. 14:21:16 code>, et j'ai besoin de convertir ceci en un
horodatage code> objet pour stocker dans un base de données. p>
Timeestamp.Valueof (String) Code>
est assez proche, mais nécessite une date. Y a-t-il un bon moyen de faire un objet d'horodatage d'une telle chaîne? P>
6 Réponses :
Avoir un jour donné (par exemple, une époque unix?) Servir comme la journée. Lorsque vous l'utilisez, utilisez uniquement les paramètres temporels que vous aimez, ignorant la journée. P>
Une autre option serait java.sql.time p>
http://download.oracle. COM / Javase / 1.4.2 / Docs / API / Java / SQL / TIME.HTM P>
Personnellement, j'utiliserais Joda Time pour analyser l'heure à un Créez ensuite un timbre d'horaire à l'aide de l'horodatage Il y a beaucoup d'autres approches (par exemple, en utilisant localTime code>, et ajoutez-le à code> localDate > pour obtenir un
localDateTime code>, puis convertissez-le dans un
instantané code> en utilisant le fuseau horaire qui vous intéresse . (Ou utiliser
localTime.todateTimeToday (DateTimezone) code>.) P>
horodatage (long) code> constructeur. p>
SimpleDateDormat code> au lieu de analyser le temps Joda, si vous voulez vraiment ...) Mais vous êtes en fin de compte, vous êtes susceptible de vouloir que l'horodatage
) code> constructeur à la fin. (Le bénéfice de l'utilisation de Joda Heure ici est qu'il est évident ce qui est représenté à chaque étape - vous n'essayez pas de traiter un «temps seulement» comme une «date et heure» ou vice versa.) P>
String str = "14:21:16"; DateFormat formatter = new SimpleDateFormat("HH:mm:ss"); Date date = formatter.parse(str); Timestamp timestamp = new Timestamp(date.getTime());
Vérifiez ce que system.out.println (horodatage) code> montre et vous verrez que ce n'est pas la date d'aujourd'hui.
Que diriez-vous de cela: sortie: p> 2011-03-02 14: 21: 16.0 P>
blockQuote> p>
+1 sur la base que cela fonctionne, et il semble être facile de trouver des réponses qui ne sont pas pour des raisons pour lesquelles nous ne comprenons pas!
@Tom Yeah, l'API de Java Date est affreux, mais je crois qu'une réponse de travail sans bibliothèques externes est indispensable (même si j'aime mieux la réponse de Jon Skeet)
Utilisez org.apache.commons.lang.time.datetutils:
+1 Pour une manière de Néater d'obtenir la valeur de temps pour le début d'aujourd'hui, bien que cela nécessite org.apache.commons.lang.time.datetutils
Eh bien, vous pouvez aussi faire Long Millistoday = nouvelle date (). Gettime () / 86400000; // 86400000 Le nombre de millisecondes A par jour code>
Entre, la bibliothèque Apache Commons-Lang fournit tellement d'utilitaires utiles que vous ferez beaucoup plus facilement votre vie lorsque vous l'utilisez.
Cette méthode produite-t-elle réellement la bonne réponse? (original) Je reçois une heure si je l'essaie, et je suis actuellement en GMT. Ne peut pas voir pourquoi en ce moment
Étrangement l'époque pour moi (System.out.println (nouvelle date (0))) retourne 1 heure du matin le 1er janvier 1970 d'où l'heure est ouverte. Est-ce que je manque quelque chose?
Oui, nous avons vécu cela aussi. Pourrait être un problème d'été / hiver.
Pouvez-vous publier des informations sur le fuseau horaire que vous utilisez pour cela?
Je suis en GMT et c'est l'hiver, Java rapporte que le décalage horaire actuel est égal à 0. L'impression de la valeur de la nouvelle date (0) indique 1 heure du 1er janvier 1970 et explicitement GMT. Doit dire que je suis un peu confus par ça.
meilleur que je puisse trouver à l'aide de l'API standard n'est pas si jolie: Notez que java.sql.time.valueof accepte une chaîne de formulaire "HH: MM: SS" comme vous le souhaitez. D'autres formats nécessiteraient une utilisation de SimpleDateDeformat. P> P>
Merci pour votre réponse, j'étais effectivement intéressé par une solution utilisant uniquement l'API standard.
Réponse totalement valide, que ce n'est pas agréable n'est pas votre faute :-) (+1)