web-dev-qa-db-ja.com

Javaの現在のタイムスタンプを取得する必要があります

JavaでMM/DD/YYYY h:mm:ss AM/PMの形式で現在のタイムスタンプを取得する必要があります。

例:06/01/2000 10:01:50 AM

スレッドセーフにする必要もあります。

このようなものを利用できますか?

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

または、リンクで説明されている例 here

50
user717236

SimpleDateFormatのスレッドの安全性は、使用するのとまったく同じメソッドブロック内で作成するだけであれば問題になりません。言い換えれば、あなたはnotクラスの静的変数またはインスタンス変数としてそれを割り当て、複数のスレッドによって呼び出すことができる1つ以上のメソッドでそれを再利用しています。この方法でのみ、SimpleDateFormatのスレッドの安全性が公開されます。ただし、現在のスレッドだけがアクセスするのと同じメソッドブロック内で同じSimpleDateFormatインスタンスを安全に再利用できます。

また、使用しているJava.sql.Timestampクラスは、JDBC APIに固有であるため、TIMESTAMP/DATETIME列タイプを格納または取得できるように乱用しないでください。 SQLデータベースで、Java.util.Dateとの間で変換します。

だから、これはする必要があります:

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
71
BalusC

Java.sql.Timestampを使用してJavaでタイムスタンプを印刷します

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

これは印刷します:

2014-08-07 17:34:16.664

1行でSimpleDateFormatを使用してJavaにタイムスタンプを印刷します。

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

    }

}

プリント:

08/14/2014 14:10:38

Java日付形式の凡例:

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
15
Eric Leschinski

この単一行ソリューションを試してください:

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

SimpleDateFormatがスレッドセーフではないという事実は、使用できないという意味ではありません。それが意味するのは、一度に複数のスレッドからアクセスされる単一の(潜在的に、必ずしもstaticではない)インスタンスを使用してはならないということです。

代わりに、スレッドごとに新しいSimpleDateFormatを作成してください。メソッド内でローカル変数として作成されたインスタンスは、並行スレッドから到達できないため、定義上安全です。

mightThreadLocalクラスを確認したいのですが、必要に応じて新しいインスタンスを作成することをお勧めします。もちろん、フォーマット定義をstatic final String DATE_FORMAT_PATTERN = "...";として定義し、新しいインスタンスごとに使用できます。

7

Java.time

Java 8+以降では、 Java.timeパッケージ を使用できます。具体的には、 DateTimeFormatterBuilder および DateTimeFormatter を使用して、パターンとリテラルをフォーマットします。

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

出力 ...

06/22/2015 11:59:14 AM

または、別の タイムゾーン …が必要な場合

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

出力 ...

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

直接日付文字列形式でJava.util.Dateを使用できます。

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

ジョーダタイム

これは同じ種類のコードですが、サードパーティのライブラリを使用しています Joda-Time 2.3。

通常、デフォルトゾーンに依存するのは悪い習慣なので、実際には タイムゾーン を指定します。ただし、例を簡単にするためにここでは省略します。

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

実行すると…

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

私はtmiestampが欲しかったときにこのようにしました

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

それが役立つことを願っています:)初心者として、私はそれが自明だと思う

Java.text.SimpleDateFormatのインポートも必要だと思います。動作するためのヘッダー:))

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

まあ時々これも便利です。

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

サンプル出力:Mon Jul 03 19:07:15 IST 2017

0
Saurabh Kumar