12

これは、タイムスタンプを渡す下の関数です。時間と秒ではなく、タイムスタンプから返される日付のみが必要です。以下のコードで私は得ています-

private String toDate(long timestamp) {
        Date date = new Date (timestamp * 1000);
        return DateFormat.getInstance().format(date).toString();
}

これは私が得ている出力です。

11/4/01 11:27 PM

しかし、私はこのような日付だけが必要です

2001-11-04

助言がありますか?

4

4 に答える 4

21

代わりに SimpleDateFormat を使用します。

private String toDate(long timestamp) {
    Date date = new Date(timestamp * 1000);
    return new SimpleDateFormat("yyyy-MM-dd").format(date);
}

更新: Java 8 ソリューション:

private String toDate(long timestamp) {
    LocalDate date = Instant.ofEpochMilli(timestamp * 1000).atZone(ZoneId.systemDefault()).toLocalDate();
    return date.format(DateTimeFormatter.ofPattern("yyyy-MM-dd"));
}
于 2012-07-10T20:43:33.957 に答える
2

このコードを使用して、必要な結果を得ることができます

protected Timestamp timestamp = new Timestamp(Calendar.getInstance().getTimeInMillis());


protected String today_Date=timestamp.toString().split(" ")[0];
于 2016-12-13T11:07:16.283 に答える
0

Joda-Time

Joda -Timeライブラリは、LocalDate時刻やタイム ゾーンのない日付のみの値を表すクラスを提供します。

タイムゾーン

日付の決定にはタイムゾーンが必要です。パリの真夜中の直後の瞬間は、モントリオールの同じ同時の瞬間よりも 1 日前の日付を意味します。タイム ゾーンの指定を怠ると、JVM の現在のデフォルト タイム ゾーンが適用されます。結果が異なる可能性があるため、おそらく希望どおりにはなりません。

サンプルコード

long millisecondsSinceUnixEpoch = ( yourNumberOfSecondsSinceUnixEpoch * 1000 ); // Convert seconds to milliseconds.
DateTimeZone timeZone = DateTimeZone.forID( "America/Montreal" );
LocalDate localDate = new LocalDate( millisecondsSinceUnixEpoch, timeZone );
String output = localDate.toString(); // Defaults to ISO 8601 standard format, YYYY-MM-DD.

前日

コメントで要求されたように、前日に取得します。

LocalDate dayBefore = localDate.minusDays( 1 );

juDate に変換

java.util.Date および .Calendar クラスは、厄介なことで知られているため、避ける必要があります。ただし、必要に応じて改宗することもできます。

java.util.Date date = localDate.toDate(); // Time-of-day set to earliest valid for that date.
于 2014-09-19T07:37:24.340 に答える