Попытка:
<xsl:value-of select="count(preceding-sibling::*) + 1" />
Редактирование - имело мозговое замораживание там, положение () более просто!
Насколько я понимаю, это то, что вы ищете? (протестировал)
require 'date'
def next_business_day(date)
skip_weekends(date, 1)
end
def previous_business_day(date)
skip_weekends(date, -1)
end
def skip_weekends(date, inc = 1)
date += inc
while date.wday == 0 || date.wday == 6
date += inc
end
date
end
Вы можете проверить это следующим образом:
begin
t = Date.new(2009,9,11) #Friday, today
puts "Today: #{Date::DAYNAMES[t.wday]} #{Date::MONTHNAMES[t.mon]} #{t.day}"
nextday = next_business_day(t)
puts "Next B-day: #{Date::MONTHNAMES[nextday.mon]} #{nextday.day}"
previousday = previous_business_day(nextday)
puts "back to previous: #{Date::MONTHNAMES[previousday.mon]} #{previousday.day}"
yesterday = previous_business_day(previousday)
puts "yesterday: #{Date::MONTHNAMES[yesterday.mon]} #{yesterday.day}"
end
Ну, вы можете использовать что-то вроде вчера = 1.days.ago , чтобы получить вчерашнюю дату. Используйте вчера.strftime ('% w') , чтобы получить день недели в виде целого числа (0 = воскресенье, 6 = суббота). Если вчера 0 (воскресенье), тогда предыдущий день недели будет 3. days.ago ... вы поняли.
И вы можете использовать завтра = 1.days.since , чтобы получить дату завтрашнего дня.