RSpec测试失败,因为SQLite中的日期比系统日期提前了一天



我有一个测试,检查今天是否发货。

let(:todays_date) {I18n.l(Date.today, format: '%m/%d/%Y')}          
expect(order.shipped_date.strftime("%m/%d/%Y")).to eq(todays_date)  

此测试失败,出现以下错误:

失败/错误:预期(order.shipped_date.strftime("%m/%d/%Y")).到eq(todays_date)

预期:"2014年10月14日"
获得:"2014年10月15日"

当我检查SQLite中的日期比系统日期提前一天时。

sqlite> select date('now');
2014-10-15
sqlite> .exit
u2@u2-VirtualBox:~/tools/$ date
Tue Oct 14 20:13:03 EDT 2014

我感谢你能提供的任何帮助。

谢谢!

文档中写道:

使用世界协调时间(UTC)。

要获取本地时区中的时间,请使用localtime修饰符:

select date('now', 'localtime');

感谢@CL,我解决了这个问题。我现在选择UTC中的所有日期,以便进行比较。

let(:todays_date) {I18n.l(Time.now.utc, format: '%m/%d/%Y')}

最新更新