是否有一种简单的方法可以从Date
对象或客户端GWT
的毫秒时间获取一周的信息?
答案 0 :(得分:3)
这样的事情:
Date date = new Date();
Date yearStart = new Date(date.getYear(), 0, 0);
int week = (int) (date.getTime() - yearStart.getTime())/(7 * 24 * 60 * 60 * 1000);
请注意,这将为您提供Date对象中的一周,该对象没有时区信息。使用时,您可能需要使用时区信息进行调整。
答案 1 :(得分:1)
旧的日期时间 API(java.util
日期时间类型及其格式 API,SimpleDateFormat
)已经过时且容易出错。建议完全停止使用,改用java.time
,modern date-time API*。
使用现代 API 的解决方案:
import java.time.LocalDate;
import java.time.ZoneId;
import java.time.temporal.ChronoField;
public class Main {
public static void main(String[] args) {
LocalDate date = LocalDate.now(ZoneId.systemDefault());
int weekOfYear = date.get(ChronoField.ALIGNED_WEEK_OF_YEAR);
System.out.println(weekOfYear);
}
}
输出:
18
从 modern date-time API 中了解有关 Trail: Date Time* 的更多信息。
* 出于任何原因,如果您必须坚持使用 Java 6 或 Java 7,您可以使用 ThreeTen-Backport,它将大部分 java.time 功能向后移植到 Java 6 & 7. 如果您正在为 Android 项目工作并且您的 Android API 级别仍然不符合 Java-8,请检查 Java 8+ APIs available through desugaring 和 How to use ThreeTenABP in Android Project。
答案 2 :(得分:0)
如何使用GWT对象不确定,但因为GWT代码在编译时转换为javascript,所以你可以这样做: