仅从时间戳中获取日期

时间:2012-07-10 20:36:58

标签: java date timestamp

这是我的下面函数,我在其中传递时间戳,我只需要从时间戳返回的日期而不是小时和秒。使用下面的代码我得到了 -

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

有什么建议吗?

3 个答案:

答案 0 :(得分:20)

改为使用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"));
}

答案 1 :(得分:1)

您可以使用此代码:

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

protected String today_Date = timestamp.toString()。split("")[0];

答案 2 :(得分:0)

约达时间

Joda-Time库提供LocalDate类来表示仅限日期的值,没有任何时间或时区。

时区

确定日期需要time zone。巴黎午夜过后的一刻意味着与蒙特利尔同一时刻相比的一天。如果您忽略指定时区,则会应用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 );

转换为j.u.Date

java.util.Date& .Calendar类应该避免,因为它们非常麻烦。但如果需要,您可以转换。

java.util.Date date = localDate.toDate(); // Time-of-day set to earliest valid for that date.