Sha256: 35f13bd8df50ab495af9e077a0124fcd465fd3ee4b3ee5b5c8d008de58f74317
Contents?: true
Size: 1.48 KB
Versions: 12
Compression:
Stored size: 1.48 KB
Contents
import org.joda.time.DateTime; public class Meetup { private final DateTime startOfMonth; public Meetup(int monthOfYear, int year) { startOfMonth = new DateTime(year, monthOfYear, 1, 0, 0); } DateTime day(int dayOfWeek, MeetupSchedule schedule) { DateTime current = cycleToNext(dayOfWeek, startOfMonth); switch (schedule) { case FIRST: break; case SECOND: current = current.plusWeeks(1); break; case THIRD: current = current.plusWeeks(2); break; case FOURTH: current = current.plusWeeks(3); break; case TEENTH: while (current.getDayOfMonth() < 13) { current = current.plusWeeks(1); } break; case LAST: current = cycleToPrev(dayOfWeek, startOfMonth.plusMonths(1).minusDays(1)); break; default: return null; } return current; } private DateTime cycleToPrev(int dayOfWeek, DateTime current) { while (current.getDayOfWeek() != dayOfWeek) { current = current.minusDays(1); } return current; } private DateTime cycleToNext(int dayOfWeek, DateTime current) { while (current.getDayOfWeek() != dayOfWeek) { current = current.plusDays(1); } return current; } }
Version data entries
12 entries across 12 versions & 1 rubygems