Need to get current timestamp in Java

后端 未结 10 1739
南旧
南旧 2020-12-25 09:47

I need to get the current timestamp in Java, with the format of MM/DD/YYYY h:mm:ss AM/PM,

For example: 06/01/2000 10:01:50 AM

I ne

相关标签:
10条回答
  • 2020-12-25 10:14

    well sometimes this is also useful.

    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());}}
    

    sample output: Mon Jul 03 19:07:15 IST 2017

    0 讨论(0)
  • 2020-12-25 10:18

    Print a Timestamp in java, using the 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()));
        }
    }
    

    This prints:

    2014-08-07 17:34:16.664
    

    Print a Timestamp in Java using SimpleDateFormat on a one-liner.

    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()));
    
        }
    
    }
    

    Prints:

    08/14/2014 14:10:38
    

    Java date format legend:

    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
    
    0 讨论(0)
  • 2020-12-25 10:21
    String.format("{0:ffffdd, MMMM d, yyyy hh:mm tt}", dt);
    
    0 讨论(0)
  • 2020-12-25 10:22

    The threadunsafety of SimpleDateFormat should not be an issue if you just create it inside the very same method block as you use it. In other words, you are not assigning it as static or instance variable of a class and reusing it in one or more methods which can be invoked by multiple threads. Only this way the threadunsafety of SimpleDateFormat will be exposed. You can however safely reuse the same SimpleDateFormat instance within the very same method block as it would be accessed by the current thread only.

    Also, the java.sql.Timestamp class which you're using there should not be abused as it's specific to the JDBC API in order to be able to store or retrieve a TIMESTAMP/DATETIME column type in a SQL database and convert it from/to java.util.Date.

    So, this should do:

    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
    
    0 讨论(0)
  • 2020-12-25 10:22

    The fact that SimpleDateFormat is not thread-safe does not mean you cannot use it. What that only means is that you must not use a single (potentially, but not necessarily static) instance that gets accessed from several threads at once.

    Instead, just make sure you create a fresh SimpleDateFormat for each thread. Instances created as local variables inside a method are safe by definition, because they cannot be reached from any concurrent threads.

    You might want to take a look at the ThreadLocal class, although I would recommend to just create a new instance wherever you need one. You can, of course, have the format definition defined as a static final String DATE_FORMAT_PATTERN = "..."; somewhere and use that for each new instance.

    0 讨论(0)
  • 2020-12-25 10:24

    java.time

    As of Java 8+ you can use the java.time package. Specifically, use DateTimeFormatterBuilder and DateTimeFormatter to format the patterns and literals.

    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));
    

    The output ...

    06/22/2015 11:59:14 AM
    

    Or if you want different time zone…

    // 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()));
    

    The output ...

    06/22/2015 12:38:42 PM
    06/22/2015 02:08:42 AM
    06/22/2015 12:53:42 PM
    
    0 讨论(0)
提交回复
热议问题