Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 从0获取一年中一周的范围_Java_Date_Simpledateformat - Fatal编程技术网

Java 从0获取一年中一周的范围

Java 从0获取一年中一周的范围,java,date,simpledateformat,Java,Date,Simpledateformat,我正在使用下面的内容来获取一年中的一周 对于10月26日,这给了我201444的价值。然而,我希望它成为201443。 我不知道如何将一年中的星期设置为0。 可能吗?如果没有,我如何修改它 这是正确的方法吗 int day = calendar.get(Calendar.DAY_OF_MONTH); int year = calendar.get(Calendar.YEAR); calendar.add(Calendar.WEEK_OF_YEAR, -1); calendar.set(Cale

我正在使用下面的内容来获取一年中的一周

对于10月26日,这给了我201444的价值。然而,我希望它成为201443。 我不知道如何将一年中的星期设置为0。 可能吗?如果没有,我如何修改它

这是正确的方法吗

int day = calendar.get(Calendar.DAY_OF_MONTH);
int year = calendar.get(Calendar.YEAR);
calendar.add(Calendar.WEEK_OF_YEAR, -1);
calendar.set(Calendar.DAY_OF_MONTH, day);
calendar.set(Calendar.YEAR, year);

SimpleDateFormat dateFormatforYearWeek = new SimpleDateFormat("yyyyww");
String s = dateFormatforYearWeek.format(date)

这篇文章可以帮助你:

试着这样做:

       Calendar calDe = Calendar.getInstance(Locale.GERMAN);       

那么,我可能会采用以下方法:

SimpleDateFormat dateFormatForYear = new SimpleDateFormat("yyyy");
SimpleDateFormat yearWeekFormat    = new SimpleDateFormat("w");
Integer          weekFrom0         = Integer.valueOf(yearWeekFormat.format(date)) - 1;
String           s                 = dateFormatForYear.format(date) + weekFrom0; 
什么是一周? 的文档未能定义周的含义。其他消息来源表明,他们打算采用标准ISO 8601对周的定义。但是他们违反了这一点,定义了
calendar.getMinimalDaysInFirstWeek()==1而不是4,如中所述

在你的问题中,一年中的一周是什么意思

ISO 8601 如上所述,将一年中的一周定义为从星期一开始,其中第一周包含一年中的第一个星期四

本标准还定义了表示一年中一周的字符串格式:
YYYY Www
yyyyywww
。注意中间的<代码> w <代码>。该字母很重要,因为它避免了格式
YYYY-MM
的歧义。如果可能的话,我建议您遵守ISO8601

零基周计数 我从没听说过从零开始数周。这对我来说毫无意义;我建议尽可能避免这种情况

如果不可能,我建议您使用日期时间库来计算一年中的标准周并减去一周。但我相信这是一条糟糕的旅行之路

时区 时区对于确定日期和一周至关重要。午夜钟声敲响,周日在巴黎结束,这意味着法国将迎来新的一周,而蒙特勒尔仍然是“最后一周”

乔达时间 Java中的旧日期tim类是出了名的麻烦、混乱和缺陷:Java.util.date、Java.util.Calendar、Java.text.SimpleDataFormat。避开它们

取而代之的是使用java 8中内置的java.time包(受Joda time启发)

跑步的时候

现在:2014-11-03T02:30:10.124-05:00
产出:2014-45
如果您必须坚持以零为基础的周数:

int zeroBasedWeekNumber = ( now.getWeekOfWeekyear() - 1 ) ;

你到底想干什么?获取与…不同的美国周编号?实际上,在我的数据库中,周从0开始。所以我想让它保持一致,看看这个类似的问题,你用的是哪种数据库?
DateTime now = DateTime.now( DateTimeZone.forID( "America/Montreal" ) );
String output = ISODateTimeFormat.weekyearWeek().print( now );
int zeroBasedWeekNumber = ( now.getWeekOfWeekyear() - 1 ) ;