0

プロジェクトの開始日のjqueryカレンダーがあります。

Watir (自動化されたブラウザー ドライバー、Ruby の gem) を使用して、入力したい日付が設定されています。

カレンダーの開始日は、それが使用される日に関係なく、常に今日の日付です。ルビーが今日の日付を処理し、ユーザーが指定した日付を使用して、それらの間の月の差を計算できる方法があるかどうか疑問に思っていました。

カレンダー プラグインの例を次に示します: 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 に答える