@@ -503,39 +503,44 @@ object DateTimeUtils {
503503 * since 1.1.1970. January is month 1.
504504 */
505505 def getMonth (date : Int ): Int = {
506- val (year, dayInYear) = getYearAndDayInYear(date)
507- val leap = if (isLeapYear(year)) 1 else 0
508- if (dayInYear <= 181 + leap) {
509- if (dayInYear <= 90 + leap) {
506+ var (year, dayInYear) = getYearAndDayInYear(date)
507+ var isLeap = isLeapYear(year)
508+ if (isLeap && dayInYear > 60 ) {
509+ dayInYear = dayInYear - 1
510+ isLeap = false
511+ }
512+
513+ if (dayInYear <= 181 ) {
514+ if (dayInYear <= 90 ) {
510515 if (dayInYear <= 31 ) {
511516 1
512- } else if (dayInYear <= 59 + leap ) {
517+ } else if (dayInYear <= 59 || (isLeap && dayInYear <= 60 ) ) {
513518 2
514519 } else {
515520 3
516521 }
517522 } else {
518- if (dayInYear <= 120 + leap ) {
523+ if (dayInYear <= 120 ) {
519524 4
520- } else if (dayInYear <= 151 + leap ) {
525+ } else if (dayInYear <= 151 ) {
521526 5
522527 } else {
523528 6
524529 }
525530 }
526531 } else {
527- if (dayInYear <= 273 + leap ) {
528- if (dayInYear <= 212 + leap ) {
532+ if (dayInYear <= 273 ) {
533+ if (dayInYear <= 212 ) {
529534 7
530- } else if (dayInYear <= 243 + leap ) {
535+ } else if (dayInYear <= 243 ) {
531536 8
532537 } else {
533538 9
534539 }
535540 } else {
536- if (dayInYear <= 304 + leap ) {
541+ if (dayInYear <= 304 ) {
537542 10
538- } else if (dayInYear <= 334 + leap ) {
543+ } else if (dayInYear <= 334 ) {
539544 11
540545 } else {
541546 12
@@ -550,54 +555,48 @@ object DateTimeUtils {
550555 */
551556 def getDayOfMonth (date : Int ): Int = {
552557 var (year, dayInYear) = getYearAndDayInYear(date)
553- val leap = if (isLeapYear(year) && dayInYear > 59 ) 1 else 0
558+ var isLeap = isLeapYear(year)
559+ if (isLeap && dayInYear > 60 ) {
560+ dayInYear = dayInYear - 1
561+ isLeap = false
562+ }
554563
555- if (dayInYear <= 181 + leap ) {
556- if (dayInYear <= 90 + leap ) {
564+ if (dayInYear <= 181 ) {
565+ if (dayInYear <= 90 ) {
557566 if (dayInYear <= 31 ) {
558567 dayInYear
559- } else if (dayInYear <= 59 + leap ) {
568+ } else if (dayInYear <= 59 || (isLeap && dayInYear <= 60 ) ) {
560569 dayInYear - 31
561570 } else {
562- dayInYear - 59 - leap
571+ dayInYear - 59
563572 }
564573 } else {
565- if (dayInYear <= 120 + leap ) {
566- dayInYear - 90 - leap
567- } else if (dayInYear <= 151 + leap ) {
568- dayInYear - 120 - leap
574+ if (dayInYear <= 120 ) {
575+ dayInYear - 90
576+ } else if (dayInYear <= 151 ) {
577+ dayInYear - 120
569578 } else {
570- dayInYear - 151 - leap
579+ dayInYear - 151
571580 }
572581 }
573582 } else {
574- if (dayInYear <= 273 + leap ) {
575- if (dayInYear <= 212 + leap ) {
576- dayInYear - 181 - leap
577- } else if (dayInYear <= 243 + leap ) {
578- dayInYear - 212 - leap
583+ if (dayInYear <= 273 ) {
584+ if (dayInYear <= 212 ) {
585+ dayInYear - 181
586+ } else if (dayInYear <= 243 ) {
587+ dayInYear - 212
579588 } else {
580- dayInYear - 243 - leap
589+ dayInYear - 243
581590 }
582591 } else {
583- if (dayInYear <= 304 + leap ) {
584- dayInYear - 273 - leap
585- } else if (dayInYear <= 334 + leap ) {
586- dayInYear - 304 - leap
592+ if (dayInYear <= 304 ) {
593+ dayInYear - 273
594+ } else if (dayInYear <= 334 ) {
595+ dayInYear - 304
587596 } else {
588- dayInYear - 334 - leap
597+ dayInYear - 334
589598 }
590599 }
591600 }
592601 }
593-
594- /**
595- * Returns the week number for the given date. The date is expressed in days since
596- * 1.1.1970. The first week of the has to have at least 4 days. The first day of a
597- * week is Monday.
598- */
599- def getWeekOfYear (date : Int ): Int = {
600- calendar.setTimeInMillis(date * MILLIS_PER_DAY )
601- calendar.get(Calendar .WEEK_OF_YEAR )
602- }
603602}
0 commit comments