只从时间戳中获取日期

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

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 

有什么建议么?

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

您可以使用此代码:

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

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

乔达时间

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

时区

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