it-swarm.com.de

Sie benötigen den aktuellen Zeitstempel in Java

Ich muss den aktuellen Zeitstempel in Java mit dem Format MM/DD/YYYY h:mm:ss AM/PM abrufen. 

Zum Beispiel: 06/01/2000 10:01:50 AM

Ich brauche es auch, um Threadsafe zu sein.

Kann ich so etwas nutzen?

Java.util.Date date = new Java.util.Date();
System.out.println(new Timestamp(date.getTime()));

Oder die Beispiele unter link here .

49
user717236

Die Threadunsicherheit von SimpleDateFormat sollte kein Problem sein, wenn Sie sie nur innerhalb desselben Methodenblocks erstellen, in dem Sie sie verwenden. Mit anderen Worten, Sie sind nicht sie als statische oder Instanzvariable einer Klasse zuweisen und in einer oder mehreren Methoden wiederverwenden, die von mehreren Threads aufgerufen werden können. Nur so wird die Threadunsicherheit von SimpleDateFormat offen gelegt. Sie können jedoch dieselbe SimpleDateFormat-Instanz innerhalb desselben Methodenblocks sicher wiederverwenden, als würde nur der aktuelle Thread darauf zugreifen.

Die Java.sql.Timestamp-Klasse, die Sie dort verwenden, sollte nicht missbraucht werden, da sie spezifisch für die JDBC-API ist, um einen TIMESTAMP/DATETIME-Spaltentyp in einer SQL-Datenbank speichern oder abrufen zu können und ihn von/in Java.util.Date zu konvertieren.

Also sollte dies tun:

Date date = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("MM/dd/yyyy h:mm:ss a");
String formattedDate = sdf.format(date);
System.out.println(formattedDate); // 12/01/2011 4:48:16 PM
69
BalusC

Druckt einen Zeitstempel in Java mit Java.sql.Timestamp.

import Java.sql.Timestamp;
import Java.util.Date;

public class GetCurrentTimeStamp {
    public static void main( String[] args ){
        Java.util.Date date= new Java.util.Date();
        System.out.println(new Timestamp(date.getTime()));
    }
}

Dies druckt:

2014-08-07 17:34:16.664

Einen Zeitstempel in Java mit SimpleDateFormat auf einem Einzeiler drucken.

import Java.util.Date;
import Java.text.SimpleDateFormat;

class Runner{
    public static void main(String[] args){

        System.out.println(
            new SimpleDateFormat("MM/dd/yyyy HH:mm:ss").format(new Date()));

    }

}

Drucke:

08/14/2014 14:10:38

Java-Datumsformat-Legende:

G Era designation      Text               AD
y Year                 Year               1996; 96
M Month in year        Month              July; Jul; 07
w Week in year         Number             27
W Week in month        Number             2
D Day in year          Number             189
d Day in month         Number             10
F Day of week in month Number             2
E Day in week          Text               Tuesday; Tue
a Am/pm marker         Text               PM
H Hour in day (0-23)   Number             0
k Hour in day (1-24)   Number             24
K Hour in am/pm (0-11) Number             0
h Hour in am/pm (1-12) Number             12
m Minute in hour       Number             30
s Second in minute     Number             55
S Millisecond          Number             978
z Time zone            General time zone  Pacific Standard Time; PST; GMT-08:00
Z Time zone            RFC 822 time zone  -0800
14
Eric Leschinski

Versuchen Sie diese einzeilige Lösung:

import Java.util.Date;
String timestamp = 
    new Java.text.SimpleDateFormat("MM/dd/yyyy h:mm:ss a").format(new Date());
8
Prasad D

Die Tatsache, dass SimpleDateFormat nicht thread-sicher ist, bedeutet nicht, dass Sie es nicht verwenden können. Dies bedeutet nur, dass Sie keine einzige Instanz (möglicherweise, aber nicht unbedingt static) verwenden dürfen, auf die von mehreren Threads gleichzeitig zugegriffen wird.

Stellen Sie stattdessen sicher, dass Sie für jeden Thread ein neues SimpleDateFormat erstellen. Instanzen, die als lokale Variablen innerhalb einer Methode erstellt wurden, sind per Definition sicher, da sie von keinem gleichzeitigen Thread aus erreichbar sind.

Sie könnten möchten einen Blick auf die Klasse ThreadLocal werfen, obwohl ich empfehlen würde, einfach eine neue Instanz zu erstellen, wo immer Sie eine benötigen. Sie können die Formatdefinition natürlich irgendwo als static final String DATE_FORMAT_PATTERN = "..."; definieren und diese für jede neue Instanz verwenden.

7

Java.time

Ab Java 8+ können Sie das Paket Java.time verwenden. Verwenden Sie insbesondere DateTimeFormatterBuilder und DateTimeFormatter , um die Muster und Literale zu formatieren.

DateTimeFormatter formatter = new DateTimeFormatterBuilder()
        .appendPattern("MM").appendLiteral("/")
        .appendPattern("dd").appendLiteral("/")
        .appendPattern("yyyy").appendLiteral(" ")
        .appendPattern("hh").appendLiteral(":")
        .appendPattern("mm").appendLiteral(":")
        .appendPattern("ss").appendLiteral(" ")
        .appendPattern("a")
        .toFormatter();
System.out.println(LocalDateTime.now().format(formatter));

Die Ausgabe ...

06/22/2015 11:59:14 AM

Oder wenn Sie eine andere Zeitzone … wünschen

// system default
System.out.println(formatter.withZone(ZoneId.systemDefault()).format(Instant.now()));
// Chicago
System.out.println(formatter.withZone(ZoneId.of("America/Chicago")).format(Instant.now()));
// Kathmandu
System.out.println(formatter.withZone(ZoneId.of("Asia/Kathmandu")).format(Instant.now()));

Die Ausgabe ...

06/22/2015 12:38:42 PM
06/22/2015 02:08:42 AM
06/22/2015 12:53:42 PM
5
Madan Sapkota

Sie können Java.util.Date mit direktem Datumsformat verwenden:

String timeStamp = new SimpleDateFormat("yyyy.MM.dd.HH.mm.ss").format(new Date());
3
Krunal

Joda-Zeit

Hier ist derselbe Code, jedoch unter Verwendung der Drittanbieter-Bibliothek Joda-Time 2.3. 

Im wirklichen Leben würde ich eine Zeitzone angeben, da es normalerweise eine schlechte Praxis ist, sich auf die Standardzone zu verlassen. Aber hier der Einfachheit halber weggelassen.

org.joda.time.DateTime now = new DateTime();
org.joda.time.format.DateTimeFormatter formatter = DateTimeFormat.forPattern( "MM/dd/yyyy h:mm:ss a" );
String nowAsString = formatter.print( now );

System.out.println( "nowAsString: " + nowAsString );

Wann laufen…

nowAsString: 11/28/2013 11:28:15 PM
2
Basil Bourque

Ich habe es so gemacht, als ich eine Zeitschrift wollte

    String timeStamp = new SimpleDateFormat("yyyyMMddHHmmss").format(Calendar.getInstance().getTime());

Hoffe, es hilft :) Als Neuling denke ich, es ist selbsterklärend

Ich denke, dass Sie auch importieren müssen Java.text.SimpleDateFormat; Header dafür zu arbeiten :))

1
MG97
    public class TimeStampExample {

        private static final SimpleDateFormat sdf = new SimpleDateFormat("yyyy.MM.dd.HH.mm.ss");
        Timestamp timestamp = new Timestamp(System.currentTimeMillis());

        public static void main(String[] args) {


        System.out.println(timestamp);

        System.out.println(timestamp.getTime());

        Instant instant = timestamp.toInstant();

        System.out.println(instant);

        System.out.println(instant.toEpochMilli());



            Timestamp timestamp = new Timestamp(System.currentTimeMillis());
            System.out.println(timestamp);


            Date date = new Date();
            System.out.println(new Timestamp(date.getTime()));


            System.out.println(timestamp.getTime());


            System.out.println(sdf.format(timestamp));

        }

    }
0
Neeraj Gahlawat
String.format("{0:dddd, MMMM d, yyyy hh:mm tt}", dt);
0
hurtledown

manchmal ist das auch nützlich.

import Java.util.Date;
public class DisplayDate {
public static void main(String args[]) {
   // Instantiate an object
   Date date = new Date();

   // display time and date
   System.out.println(date.toString());}}

Beispielausgabe: Mon Jul 03 19:07:15 IST 2017

0
Saurabh Kumar