当前位置: 首页 > 知识库问答 >
问题:

android java,日期的周数不正确

柳俊逸
2023-03-14

在我的android应用程序中,我正在努力获取提供日期的周数。但是它没有给我正确的周数,我正在使用下面的代码来获取周数。

String format = "dd-MM-yyyy";
SimpleDateFormat df = new SimpleDateFormat(format);
Date date = df.parse(date);
Calendar cal = Calendar.getInstance();
cal.setTime(date);
int week = cal.get(Calendar.WEEK_OF_YEAR);

从上述日历中可以看出,截至2016年1月,属于第1周的天数只有第1、第2和第3天。第二周的相关天数为第四、第五、第六、第七、第八、第九和第十天。第三周的相关天数为11、12、13、14、15、16和17日,依此类推。但对于2016年1月12日,上述代码给出了第2周,而不是第3周。是我做错了什么,还是这是函数正常工作的方式。我怎样才能达到我的目标,获得我上面提到的周数。

共有2个答案

周宏胜
2023-03-14

发现于https://docs.oracle.com/javase/7/docs/api/java/util/GregorianCalendar.html:

“一年中的一周”字段的计算值范围为1到53。日历年的第一周是从getFirstDayOfWeek()开始的最早的七天周期,其中至少包含从该年开始的getMinimalDaysInFirstWeek()天。因此,它取决于getMinimalDaysInFirstWeek()、getFirstDayOfWeek()和1月1日的星期几的值。

所以你的第一周将是第0周,因为它从你的第一个完整的7天开始计算。您可以通过将getMinalDaysInFirstZacks()设置为较低的值来改变这一点

潘星阑
2023-03-14

1月1日、2日和3日实际上是2015年的第53周。代码运行正常,你对周数的假设是错误的。GregorianCalendar的默认行为与Wikipedia第一周的ISO定义相同:

ISO 8601对第01周的定义是一年中第一个星期四所在的一周。以下基于本周属性的定义相互等效,因为ISO周从周一开始:

  • 这是第一周的大多数(4天或更多)的日子在一月

如果1月1日是星期一、星期二、星期三或星期四,则在第01周。如果1月1日是星期五,它是前一年第53周的一部分;如果在星期六,它是第52周的一部分(如果前一年是闰年,它是第53周);如果在星期天,它是前一年第52周的一部分。

 类似资料:
  • 假设我有一些账单,上面有开始日期和结束日期。 我要检查的商业规则是 例如,3月10日到4月9日大约相隔一个月,所以我用它来检查任何两个连续的账单开始日期(4月10日和3月10日)是否相隔一个月。 现在我的问题是求周期的长度。例如,假设我有以下数据集 我正在使用JodaTime库,所以我说类似这样的话 它返回0,这是正确的,但没有用处。 结果是1,尽管相隔一天。 有什么更好的方法来做到这一点?我可以

  • 问题内容: 我正在学习Go,并且正在尝试对日期时间进行JSON解组。 我有一个用C语言编写的程序生成的JSON,我正在输出我认为有效的ISO8601 / RFC3339时区偏移量。我正在使用以下格式字符串: (请注意,本机不支持,我有一个包装器将其替换为纳秒级)。 然后,将产生以下结果: 但是在Go中取消编组此功能将无效:https : //play.golang.org/p/vzOXbzAwdW

  • 问题内容: 通过这个简单的功能,我可以获得星期几。现在,用星期几,如何获取从星期日开始的日期范围? 欢迎任何帮助。谢谢。 问题答案: 前言: 返回您从星期一开始的星期数,因此我将回答您的问题,该问题也处理从星期一开始的星期。如果您希望它在周日开始的几周内工作,请根据需要进行更改。 我在中发布了该实用程序,请参见。 标准库没有提供可以返回给定星期(年+周数)的日期范围的函数。因此,我们必须自己构建。

  • 我需要通过传递这些参数来获取日期 年份 我在类中查找构造函数,但不包含这些参数。

  • 我正在寻找确切的开始和结束日期根据我们的桌面日历,如果我给周,年作为输入。但是上面的代码给出的输出是2009年1月27日星期日。我知道这是因为按照我们的说法,一周的第一天默认是星期天,但我需要按照桌面日历

  • 问题内容: 我如何知道JavaScript的周数和年份来计算日期?对于第20周和2013年以获得5/16/2013,我正在尝试这样做: 问题答案: function getDateOfWeek(w, y) { var d = (1 + (w - 1) * 7); // 1st of January + 7 days for each week 这使用简单的周定义,即2013年的第20周是5月14日