这是我的下面函数,我在其中传递时间戳,我只需要从时间戳返回的日期而不是小时和秒。使用下面的代码我得到了 -
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
有什么建议吗?
答案 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 );
java.util.Date& .Calendar类应该避免,因为它们非常麻烦。但如果需要,您可以转换。
java.util.Date date = localDate.toDate(); // Time-of-day set to earliest valid for that date.