web-dev-qa-db-ja.com

Javaでタイムスタンプを日付に変換する方法

Javaでカウントを取得した後に 'timeStamp'をdateに変換するにはどうすればよいですか?

私の現在のコードは次のとおりです。

public class GetCurrentDateTime {

    public int data() {
        int count = 0;
        Java.sql.Timestamp timeStamp = new Timestamp(System.currentTimeMillis());
        Java.sql.Date date = new Java.sql.Date(timeStamp.getTime()); 
        System.out.println(date);
        //count++;

        try {
            Class.forName("com.mysql.jdbc.Driver");
            Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/pro", "root", "");

            PreparedStatement statement = con.prepareStatement("select * from orders where status='Q' AND date=CURDATE()");
            ResultSet result = statement.executeQuery();
            while (result.next()) {
                // Do something with the row returned.
                count++; //if the first col is a count.
            }
        } catch (Exception exc) {
            System.out.println(exc.getMessage());
        }

        return count;
    }
}

これは私のデータベースです: enter image description here

ここで私が得た出力は2012-08-07 0でしたが、同等のクエリは3を返します。なぜ私は0を得るのですか?

91
Krishna Veni

スタンプのgetTime()値をパラメータとして新しいDateオブジェクトを作成するだけです。

これが例です(私は現在の時刻のタイムスタンプの例を使います):

Timestamp stamp = new Timestamp(System.currentTimeMillis());
Date date = new Date(stamp.getTime());
System.out.println(date);
170
Alex Coleman
// timestamp to Date
long timestamp = 5607059900000; //Example -> in ms
Date d = new Date(timestamp );

// Date to timestamp
long timestamp = d.getTime();

//If you want the current timestamp :
Calendar c = Calendar.getInstance();
long timestamp = c.getTimeInMillis();
35
VincentLamoute

ただ

Timestamp timestamp = new Timestamp(long);
Date date = new Date(timestamp.getTime());
10

私はずっと前からこれを探してきました、それが Eposhコンバーター 簡単にすることがわかります:

long Epoch = new Java.text.SimpleDateFormat("MM/dd/yyyy HH:mm:ss").parse("01/01/1970 01:00:00").getTime() / 1000;

またはその逆:

String date = new Java.text.SimpleDateFormat("MM/dd/yyyy HH:mm:ss").format(new Java.util.Date (Epoch*1000));
5
Joker 00

まず第一に、あなたはPreparedStatementを使うことの利点を利用していません。まずPreparedStatementを次のように修正することをお勧めします。

PreparedStatement statement = con.prepareStatement("select * from orders where status=? AND date=?")

その後、statement.setXX(param_index, param_value)を使用してそれぞれの値を設定できます。 timestampへの変換については、次のjavadocをご覧ください。

PreparedStatement.setTimeStamp()
タイムスタンプ

お役に立てれば!

4
Sujay
    Timestamp tsp = new Timestamp(System.currentTimeMillis());
   Java.util.Date dateformat = new Java.util.Date(tsp.getTime());
3
MR AND

他の回答はタイムゾーンにとらわれず、現実のアプリケーションでは対応できないため、対応することが義務付けられています。タイムスタンプとJVMが異なるタイムゾーンを使用しているときにタイムスタンプから日付への変換を正しくするには、Joda TimeのLocalDateTime(またはJava 8のLocalDateTime)を次のように使用します。

Timestamp timestamp = resultSet.getTimestamp("time_column");
LocalDateTime localDateTime = new LocalDateTime(timestamp);
Date trueDate = localDateTime.toDate(DateTimeZone.UTC.toTimeZone());

以下の例では、タイムスタンプがUTCであると仮定しています(通常データベースの場合と同様)。タイムスタンプが異なるタイムゾーンにある場合は、toDateステートメントのタイムゾーンパラメータを変更します。

3

クエリで何を選択しようとしているのかはわかりませんが、引数なしのUNIX_TIMESTAMP()は現在時刻を返すことに注意してください。おそらく引数として有効な時間を指定するか、条件を変更する必要があります。

編集:

これは、質問に基づく時間限定クエリの例です。

PreparedStatement statement = con
        .prepareStatement("select * from orders where status='Q' AND date > ?");
Date date = new SimpleDateFormat("dd/MM/yyyy").parse("01/01/2000");
statement.setDate(1, new Java.sql.Date(date.getTime()));

EDIT:タイムスタンプ列

タイムスタンプの場合はJava.sql.TimestampPreparedStatement.setTimestamp() を使用してください。

PreparedStatement statement = con
        .prepareStatement("select * from orders where status='Q' AND date > ?");
Date date = new SimpleDateFormat("dd/MM/yyyy").parse("01/01/2000");
Timestamp timestamp = new Timestamp(date.getTime());
statement.setTimestamp(1, timestamp);
3
tenorsax

Androidでは、非常にシンプルです。ただCalenderクラスを使用してcurrentTimeMillisを取得してください。

Timestamp stamp = new Timestamp(Calendar.getInstance().getTimeInMillis());
Date date = new Date(stamp.getTime());
Log.d("Current date Time is   "  +date.toString());

JavaでSystem.currentTimeMillis()を使用して現在のタイムスタンプを取得します

3
Ashish Saini

new Date(timestamp.getTime())は動作するはずですが、新しい空想のJava 8の方法(よりエレガントでタイプセーフであり、新しい時間クラスを使用するのに役立つ場合があります)はDate.from(timestamp.toInstant())を呼び出すことです。

Timestamp自体がDateのインスタンスであるという事実に頼らないでください。 別の答え のコメントにある説明を参照してください。)

3
Garret Wilson

このJavaコードを使ってみてください。

enter code here 

  Timestamp stamp = new Timestamp(System.currentTimeMillis());
  Date date = new Date(stamp.getTime());
  DateFormat f = new SimpleDateFormat("yyyy-MM-dd");
  DateFormat f1 = new SimpleDateFormat("yyyy/MM/dd");
  String d=f.format(date);
  String d1=f1.format(date);
  System.out.println(d);
  System.out.println(d1);
0
Help developer

既存のJava.util.Date dateがあるとします。

Timestamp timestamp = new Timestamp(long);
date.setTime( l_timestamp.getTime() );
0
Albizia

このメソッドを使用して、特定の地域のタイムスタンプとタイムゾーンから日付を取得できます。

public String getDayOfTimestamp(long yourLinuxTimestamp, String timeZone) {
    Calendar cal = Calendar.getInstance();
    cal.setTimeInMillis(yourLinuxTimestamp * 1000);
    cal.setTimeZone(TimeZone.getTimeZone(timeZone));
    Date date = cal.getTime();
}
0
Manoj Patidar