标签: week-number

Ruby On Rails,周数不正确(-1)

我需要当前的周数,如果我没有完全弄错,现在是第51周?但是,当在控制台中测试时,我得到了这个.

Time.now
=> 2013-12-19 11:08:25 +0100
Time.now.strftime('%U')
=> "50"

Date.today
=> Thu, 19 Dec 2013
Date.today.strftime("%U").to_i
=> 50
Run Code Online (Sandbox Code Playgroud)

这是为什么?

ruby ruby-on-rails week-number ruby-on-rails-4

5
推荐指数
3
解决办法
1349
查看次数

解释为什么2012年12月31日是第53周而不是第1周(ISO-8601)

我正在尝试在JavaScript中编写一个函数来返回给定日期的周数,并且我正在针对我在网络上找到的两个函数测试我的代码,即

http://techblog.procurios.nl/k/n618/news/view/33796/14863/calculate-iso-8601-week-and-year-in-javascript.html
http://www.epoch-calendar.com/support/getting_iso_week.html
Run Code Online (Sandbox Code Playgroud)

我从1970年1月1日开始测试了30,000天,我和第二个来源有一些不同.第一种差异是某些情况下该来源返回零周的情况,这显然是错误的.然后对于其他一些情况,它返回第53周,我的函数返回第1周.这些是日期

  • 1984年12月31日
  • 2012年12月31日
  • 2040年12月31日

他们都看起来像这样

Dec         Jan
29  30  31  01  02  03  04  05  06  07  08  09  10
Sa  Su  Mo  Tu  We  Th  Fr  Sa  Su  Mo  Tu  We  Th
        ^^                          ^^
Run Code Online (Sandbox Code Playgroud)

根据ISO-8601

  • 周从星期一开始
  • 一年中的第一周是该年第一个星期四的一周

1月3日是2013年的第一个星期四,因此1月3日是第1周(2013年)的一天.第1周(2013年)的开始是在星期四之前的星期一,即2012年12月31日.

因此,2012年12月31日必须是第1周.

然而...

  • 当我在Wolfram Alpha中键入"2012年12月31日的哪一周"时,它将返回第53周
  • 当我在excel中键入'= WEEKNUM("2012-12-31")'时,它也返回第53周

我错过了什么吗?困扰我的是,它只发生在如此少的日期(70年或更长时间内的3个日期)

javascript date week-number

5
推荐指数
1
解决办法
1592
查看次数

Java和多SQL RDBMS之间的一周计算差异

我必须做一些报告,并且必须在Java和MySQL的任何日期计算周,但他们有不同的算法.

首先,请注意,通过一些方法,在某一年结束的某些日子里,是明年的第一周.示例:2012-12-31是2013年的第1周(我不记得确切的年份,但它就是这样).所以我必须计算一个约会的正确的一周

在Java中,它基于2个标准,取决于区域设置:

  • 一周的第一天(周日或周一)
  • 第一周的最短日期(1或4)

    Calendar cal = Calendar.getInstance();
    int javaWeek = cal.get(Calendar.WEEK_OF_YEAR);
    int weekYear = cal.getWeekYear();
    
    Run Code Online (Sandbox Code Playgroud)

在MySQL中,它基于2个标准依赖于模式(0到7):

  • 一周的第一天(周日或周一)(Java中也是如此)
  • 第一周的最小天数为4或第一周包含一周的第一天

    SELECT WEEK('2012-12-12', 1);
    SELECT YEARWEEK('2012-12-12', 1);
    
    Run Code Online (Sandbox Code Playgroud)

在MySQL中,一些模式将计算一周的奇怪结果,例如,一年有0周只有1天,其他几周有整整7天(我认为第1周真的是第一周,第0周是前周或某事).我会忽略这些模式

方案是:我在Java中计算了我的系统区域设置(带有设置:getFirstDayOfWeek()==SUNDAY和的区域设置getMinimalDaysInFirstWeek==1)的日期基础列表的周,我想在MySQL中使用相同的结果进行计算

但是我在MySQL中尝试所有8种模式,没有匹配.我失败了,因为在MySQL中没有第一周最小日的模式计算基础是1(只有一些模式有4),所以我手动setMinimalDaysInFirstWeek(4)和MySQL中的模式6匹配Java中的结果

(我必须编写测试,比较Java和MySQL中2年内每天的结果)

所以我的解决方案是,我必须修复 setMinimalDaysInFirstWeek(4),如果getFirstDayOfWeek()是星期一,我在MySQL中选择模式3,如果 getFirstDayOfWeek()是SUNDAY,我在MySQL中选择模式6.我认为这只是一个临时解决方案而且非常奇怪.

还有一个问题,我真的害怕如果我的系统从MySQL变为其他RDBMS,它将有其他方法而我无法处理所有这些(Oracle中的示例没有WEEK功能).那么有什么方法可以让calc周满足很多RDBMS吗?

我有一个想法是在一个平台(Java或MySQL)中的计算周,然后将结果传递给另一个:

  • 如果从Java传递到MySQL,我将结果传递给查询字符串,或者构建一个包含我的结果的表

  • 如果从MySQL传递给Java,我必须编写一个从Java调用它的过程,并且必须解决问题"找到计算方法满足许多RDBMS的方法"

但我必须计算大量的日期,这些都不能满足我,任何人都有想法解决我的问题?

java sql datetime date week-number

5
推荐指数
1
解决办法
1212
查看次数

Mac OS X中的哪些设置会影响Java中的`Locale`和`Calendar`?

这两个问题让我想知道Mac OS X中的哪些设置会影响Java中的LocaleCalendar默认值和行为:

这些讨论的关键是日历中的这两个属性:

1当在默认美国上运行时,这两个值的默认值在Java 7和8中.什么可以导致报告其他值?

java macos calendar dayofweek week-number

5
推荐指数
1
解决办法
3159
查看次数

VB.NET DatetimePicker - 错误的周数

我的vbnet扩展日期时间选择器有问题.当元素传递到新年(2016)时,左侧显示的周数是错误的.

错误的周数

我有一个"datetimepicker",它不是默认组件,它在这里下载:http: //www.codeproject.com/Articles/17063/ExtendedDateTimePicker-control-with-week-numbers

我不明白为什么日历从53转到2而不是53到1.

也许其中一个人有同样的错误.谢谢你的时间.

vb.net datetimepicker week-number

5
推荐指数
1
解决办法
893
查看次数

如何计算一年是否有53周

根据每周每年的公式https://en.wikipedia.org/wiki/ISO_week_date,您应该能够找到每周53周的公式.我已经将公式复制到PHP中,但它似乎在2020年左右回归52周而不是53周.

function weeks($year){
    $w = 52;
    $p = ($year+($year/4)-($year/100)+($year/400))%7;
    if ($p == 4 || ($p-1) == 3){
        $w++;
    }
    return $w." ".$p;
}

for ($i = 2000; $i <= 2144; $i++) {
    echo $i." (".weeks($i).") | ";
}
Run Code Online (Sandbox Code Playgroud)

来自维基百科

以下71年的400年周期有53周(371天); 未列出的年份有52周(364天); 当前年份增加2000:

004,009,015,020,026,032,037,043,048,054,060,065,071,076,082,088,093,099,105,111,116,122,128,133,139, 144

我知道我可以使用date()函数获取给定年份的总周数,但我只是想知道是否有人知道数学,因为维基百科上的公式似乎是错误的.

编辑工作代码

function p($year){
    return ($year+floor($year/4)-floor($year/100)+floor($year/400))%7;
}

function weeks($year){
    $w = 52;
    if (p($year) == 4 || p($year-1) == 3){
        $w++;
    }
    return $w; // returns the number of weeks in that …
Run Code Online (Sandbox Code Playgroud)

php math week-number

5
推荐指数
1
解决办法
2006
查看次数

Calendar.getActualMaximum(Calendar.WEEK_OF_YEAR)很奇怪

要么我不理解方法getActualMaximum(int)或字段WEEK_OF_YEAR,要么涉及到Sun漏洞(或全部三个)......有人可以向我解释为什么(至少在德语区域设置中 ......)以下代码:

    Locale.setDefault( Locale.GERMAN );
    Calendar c = Calendar.getInstance();
    c.set( Calendar.YEAR, 2010 );
    c.set( Calendar.MONTH, 0 );
    c.set( Calendar.DAY_OF_MONTH, 1 );
    System.out.println("max:    "+c.getActualMaximum( Calendar.WEEK_OF_YEAR ));
    System.out.println("actual: "+c.get( Calendar.WEEK_OF_YEAR ));
Run Code Online (Sandbox Code Playgroud)

产生以下输出:

    max:    52
    actual: 53
Run Code Online (Sandbox Code Playgroud)

这是Javadoc getActualMaximum(int):

给定此Calendar的时间值,返回指定日历字段可能具有的最大值.例如,MONTH字段的实际最大值在某些年份为12,在希伯来日历系统中为其他年份的13.


编辑

情节变粗.在英语语言环境(-Duser.language=en -Duser.country=us)中,输出为:

    max:    52
    actual: 1
Run Code Online (Sandbox Code Playgroud)

似乎指出它是德国语言环境的Sun bug?

java calendar week-number

4
推荐指数
1
解决办法
1万
查看次数

Flex,如何获得约会的一周?

我在Flex Date对象中找不到一个方法来获取一年中的一周(1到52)

找到这个的最佳方法是什么?对于诸如Java中的JodaTime之类的日期操作,是否有任何有用的flex库.

apache-flex actionscript date week-number

4
推荐指数
1
解决办法
5974
查看次数

SQL Server - 根据周数获取一周内的第一个日期?

我有一个查询(用于bug tracker.net),按状态计算每周的错误数.但查询返回周数,我真正想要的是一周的第一个日期

select datepart(wk, DateAdd(day, 0, DateDiff(day, 0, bg_reported_date)))
       as [week], bg_status , st_name as [status], count(*) as [count] 
  from bugs inner join statuses on bg_status = st_id 
 group by datepart(wk, DateAdd(day, 0, DateDiff(day, 0, bg_reported_date))),
          bg_status, st_name
 order by [week], bg_status
Run Code Online (Sandbox Code Playgroud)

得到周数的部分是

datepart(wk, DateAdd(day, 0, DateDiff(day, 0, bg_reported_date))) as [week]
Run Code Online (Sandbox Code Playgroud)

它返回此输出:

week        bg_status   status                                        count
----------- ----------- --------------------------------------------- ------
22          1           new                                           1
22          5           closed                                        32
Run Code Online (Sandbox Code Playgroud)

但最好是说每周的第一个日期,例如01-01-2010,然后是08-01-2010等

问题不是重复如何从SQL Server中的周数获得"周开始日期"和"周结束日期"?(回答说如何从一个星期开始,而不是从一周的数字开始)

不是从周数计算日期的重复(问题请求c#)

从提供的日期获取第一周的日期(问题请求javascript)不重复

我做了搜索,但找不到这个问题的答案SQL Server(2010如果重要)

t-sql sql-server week-number bugtracker.net

4
推荐指数
1
解决办法
6310
查看次数

Mysql需要每周COUNT题词持续12周

本周我已经算上了铭文.但我需要在过去12周内每周计算一次铭文,并将其发送到阵列中.

我的实际要求是:

SELECT COUNT(*) FROM PERSON
YEAR(date_inscription) = YEAR(NOW())
AND WEEK(date_inscription) = WEEK(NOW())
Run Code Online (Sandbox Code Playgroud)

mysql date count week-number

4
推荐指数
1
解决办法
1845
查看次数