只从时间戳中获取日期
这是我的下面函数,我在其中传递时间戳,我只需要从时间戳返回的日期而不是小时和秒。 以下代码我得到 –
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.