2016-04-10 16 views

Antwort

4

Dies ist eine reine Lösung Ruby ist.

require 'date' 

d = Date.strptime('9-4-2016', '%d-%m-%Y') 
    #=> #<Date: 2016-04-09 ((2457488j,0s,0n),+0s,2299161j)> 
d + (1 - d.wday) % 7 
    #=> #<Date: 2016-04-11 ((2457490j,0s,0n),+0s,2299161j)> 

1 ist Montag Offset. d.wday #=> 6.

Ich habe angenommen, dass, wenn das Datum auf einen Montag fällt, der "nächste" Montag der gleiche Tag ist. Wenn es der folgende Montag sein soll, verwenden Sie:

d + (d.wday == 1) ? 7 : (1 - d.wday) % 7 
3

Sie können dieses Datum in der nächsten Woche Ihres date finden:

date = Date.parse('9-4-2016') 
(date..date + 6).find {|d| d.strftime("%A") == "Monday"} 
#=> Mon, 11 Apr 2016 
+0

Sie sollten wirklich 'strptime' verwenden, da' 9' der Tag oder der Monat sein könnte. Außerdem schlage ich vor, dass Sie 'require' date' angeben. –

+0

@CarySwoveland, es ist eine Frage über Schienen (nach Tags), also keine Notwendigkeit, es zu verlangen. – Ilya

Verwandte Themen