在Ruby中:
> require 'time'
=> true
> Date.new(1401, 1, 1).saturday?
=> true
使用MySQL:
SELECT dayofweek('1401-01-01')
这将返回星期四的5
。
在OSX日历中,这也是星期四。
造成这种差异的原因是什么?
答案 0 :(得分:8)
我强烈怀疑其中一个环境正在考虑从朱利安历法到格里高利历的变化(自16世纪以来的不同时间取决于地点)。
使用我的Noda Time库,我们可以看到哪个是:
using System;
using NodaTime;
class Test
{
static void Main()
{
var julian = new LocalDate(1401, 1, 1,
CalendarSystem.GetJulianCalendar(4));
var gregorian = new LocalDate(1401, 1, 1,
CalendarSystem.GetGregorianCalendar(4));
Console.WriteLine("Julian: {0}", julian.IsoDayOfWeek);
Console.WriteLine("Gregorian: {1}", gregorian.IsoDayOfWeek);
}
}
输出:
Saturday
Thursday
所以看起来Ruby已经考虑了过渡,但MySQL没有。
最大的问题是:你对哪个日历系统感兴趣? (在1401年你可能想要朱利安一个 - 但如果你在16世纪或更晚的时候有日期,那就变得更加棘手......)