Java 每年的公历周是如何运作的
为什么calendar.WEEK OF YEAR打印的是3而不是6Java 每年的公历周是如何运作的,java,date,gregorian-calendar,Java,Date,Gregorian Calendar,为什么calendar.WEEK OF YEAR打印的是3而不是6 GregorianCalendar calendar = new GregorianCalendar(); System.out.println("time"+calendar.getTime()); System.out.println("week of year "+calendar.WEEK_OF_YEAR); 输出 time Tue Feb 09 12:58:02 IST 202
GregorianCalendar calendar = new GregorianCalendar();
System.out.println("time"+calendar.getTime());
System.out.println("week of year "+calendar.WEEK_OF_YEAR);
输出
time Tue Feb 09 12:58:02 IST 2021
week of year 3
是一个常数,你不能这样使用它
您可能指的是calendar.getCalendar.WEEK\u OF_YEAR,今天2月9日它将打印7,而不是6,因为它是基于1的,而不是基于0的 请注意,正如Basil Bourque的漂亮回答所解释的,您应该使用新的DateTime API。tl;博士 从2021年1月4日(星期一)到2022年1月2日(星期日)的2021年第一季度 用标准符号表示,2021年2月9日是基于2021:2021-W06-2的一周中第六周的第二天星期二 细节 可怕的类GregorianCalendar在几年前被JSR310中定义的现代java.time类所取代 java.time 获取当前日期
LocalDate today = LocalDate.now( ZoneId.of( "Asia/Kolkata" ) ) ;
使用获取基于一年的一周中的一周。在这一定义中:
一周是星期一星期天
第一周包含日历年的第一个星期四。
根据这一定义,以周为基础的年度有52个或更多
整整53周
int week = today.get ( IsoFields.WEEK_OF_WEEK_BASED_YEAR );
并获取该日期基于周的年份的年份号。这可能与第一周和最后一周的日历年编号不同
int weekYear = now.get ( IsoFields.WEEK_BASED_YEAR );
例如,2021年的ISO 8601周基准年从2021年1月4日开始。2021年2月9日是第6周
请参见ISO 8601中基于周的2021年。java.util的日期时间API及其格式化API SimpleDateFormat已过时且容易出错。建议完全停止使用,并切换到
无论出于何种原因,如果您必须坚持使用Java6或Java7,您可以使用哪个backport将大部分Java.time功能移植到Java6&7。
如果您正在为Android项目工作,并且您的Android API级别仍然不符合Java-8,请检查并确认。
本文很好地解释了如何使用JavaSE8日期时间API。如果仍要使用传统API,则有两个选项:
import java.text.SimpleDateFormat;
import java.util.Calendar;
class Main {
public static void main(String[] args) {
Calendar calendar = Calendar.getInstance();
// Getting current week using SimpleDateFormat
System.out.println("Current week: " + new SimpleDateFormat("w").format(calendar.getTime()));
// Getting current week using Calendar.WEEK_OF_YEAR
System.out.println("Current week: " + calendar.get(Calendar.WEEK_OF_YEAR));
}
}
输出:
第01周是公历年的第一个星期四,即1月的第一个星期四。根据这一定义,2021年的第01周从1月4日开始,因此本周为第6周
如果是以1为基础,那么当前周应该是6,对吗?实际上,只要是第6周,就可以了解ISO规定的第一周是什么。谢谢,巴兹尔,我还有一个疑问,为什么它会像本周那样打印第7周6@saurabhkumar根据ISO 8601的定义,这是第7周。2021年第1周开始于2020年12月28日。星期有几种定义。您忽略了指定您的.calendar.getCalendar.WEEK\u OF\u YEAR打印7@saurabhkumar是的,正确,现在已在注释中修复。谢谢我补充回答。我必须在喝咖啡之前停止发帖。@saurabhkumar是的,同一个网站显示。在这种情况下,2020年有53周,对吗?我的产出与你的本周不同:7本周:7
import java.text.SimpleDateFormat;
import java.util.Calendar;
class Main {
public static void main(String[] args) {
Calendar calendar = Calendar.getInstance();
// Getting current week using SimpleDateFormat
System.out.println("Current week: " + new SimpleDateFormat("w").format(calendar.getTime()));
// Getting current week using Calendar.WEEK_OF_YEAR
System.out.println("Current week: " + calendar.get(Calendar.WEEK_OF_YEAR));
}
}
Current week: 6
Current week: 6