0

我有一个项目开始日期的 jquery 日历。

使用 Watir(自动浏览器驱动程序,ruby 的 gem),我有一个我想输入的设定日期。

日历开始日期始终是今天的日期,无论使用日期是什么。我想知道 ruby​​ 是否有一种方法可以处理今天的日期,并使用用户提供的指定日期来计算它们之间的月份差。

这是日历插件的示例:http: //jqueryui.com/datepicker/

例子:

今天的日期是 2012 年 10 月 30 日,如果有一个项目要在 2012 年 12 月 20 日开始,那就是从现在开始的 2 个月,所以点击下个月按钮 2 次。

有没有办法我可以做到这一点?

4

2 回答 2

2

以下是我使用 JSdatepicker 处理类似情况的方法:

$today = Time.now.strftime("%e").gsub(" ", "") #one digit day of month without leading space

@browser.text_field(:id => /dateAvailable/).click
Watir::Wait.until(60) {@browser.div(:id => /dateAvailable_popup_cal/).td(:text => $today).exists?}
@browser.div(:id => /dateAvailable_popup_cal/).td(:text => $today).click
  1. 设置或获取日期。
  2. 单击触发 JSDatePicker 对象的 text_field
  3. 等到日历实际弹出
  4. 显示当前月份,因此选择今天的日期编号。

在您的情况下,您还需要设置月份。无论是提示用户,还是选择“今天”,原理都是一样的:

$month = Date::MONTHNAMES[Date.today.month] #etc

做出大量假设的伪代码(仅未来日期、日历上显示为文本的月份名称等):

while !@jquerytablewindow.text.include?($month)
     next_month_button.click
end

与每月计数相比,我没有看到我的方法有什么特别的优势,除非当然我们在日历上增加了一个月,并且您仍然希望您的代码正常工作!

于 2012-10-30T21:13:20.617 回答
1

你可以这样做:

#End date converted to date object
specified_date = '20/12/2012'
end_date = Date.parse(specified_date)

#Start date (today - 30/10/2012)
today  = Date.today

#Determine difference in months
number_of_months_up_to_today = (today.month + today.year * 12)
number_of_months_up_to_end = (end_date.month + end_date.year * 12)
clicks_required = number_of_months_up_to_end - number_of_months_up_to_today
#=> 2

基本上它是计算自 0 年以来的月数,然后找出差异。

于 2012-10-30T18:47:20.347 回答