Skip to content

Commit cdfae27

Browse files
committed
[SPARK-8199] cleanup & python docstring fix
1 parent 746b80a commit cdfae27

File tree

3 files changed

+43
-54
lines changed

3 files changed

+43
-54
lines changed

python/pyspark/sql/functions.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -706,7 +706,7 @@ def month(col):
706706
>>> df0 = sqlContext.createDataFrame([('2015-04-08',)], ['a'])
707707
708708
>>> df0.select(month('a').alias('month')).collect()
709-
[Row(month=4)]
709+
[Row(month=4)]
710710
"""
711711
sc = SparkContext._active_spark_context
712712
return Column(sc._jvm.functions.month(col))

sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/util/DateTimeUtils.scala

Lines changed: 42 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -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
}

sql/catalyst/src/test/scala/org/apache/spark/sql/catalyst/util/DateTimeUtilsSuite.scala

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -378,14 +378,4 @@ class DateTimeUtilsSuite extends SparkFunSuite {
378378
assert(DateTimeUtils.getDayOfMonth((c.getTimeInMillis / DateTimeUtils.MILLIS_PER_DAY).toInt) ===
379379
24)
380380
}
381-
382-
test("get week of year") {
383-
val c = Calendar.getInstance()
384-
c.set(2015, 2, 18)
385-
assert(DateTimeUtils.getWeekOfYear((c.getTimeInMillis / DateTimeUtils.MILLIS_PER_DAY).toInt) ===
386-
12)
387-
c.set(2012, 11, 24)
388-
assert(DateTimeUtils.getWeekOfYear((c.getTimeInMillis / DateTimeUtils.MILLIS_PER_DAY).toInt) ===
389-
51)
390-
}
391381
}

0 commit comments

Comments
 (0)