繁体   English   中英

给定小时,月和年,将其转换为Spark scala中的时间戳

[英]Given hours and month and year, convert it to a time stamp in Spark scala

我有三列-“年”,“月”和“小时”。 我需要将其转换为Spark Scala中的时间戳的输入。

示例:我的年份是2017,月份是11,小时是570,我需要将其转换为Spark Scala中的时间戳。

任何对此的投入将有很大帮助。 输出应为2017-11-23 17:00

Java的LocalDateTime应该为您做

import java.time.LocalDateTime
val y = 2017
val m = 11
val h = 570
val d1 = LocalDateTime.of(y, m, 1, 0, 0) // have to use 1 for day
val d2 = d1.plusHours(h)

我的确得到了与您不同的结果。 以上让我:

d2:java.time.LocalDateTime = 2017-11-24T18:00

    def getTimeStamp(y:Int,m:Int,h:Int) = {
     require(m<=12,"Invalid Data")
     def leapYr(y:Int) = if(y%100==0) y%400==0 else y%4==0
     val monthDays = Array((1,31),(2,28),(3,31),(4,30),(5,31),(6,30),
                            (7,31),(8,31),(9,30),(10,31),(11,30),(12,31))
     val monthDaysLeap = Array((1,31),(2,29),(3,31),(4,30),(5,31),(6,30),
                            (7,31),(8,31),(9,30),(10,31),(11,30),(12,31))
     val days = if(!leapYr(y)){ monthDays(m-1)._2} else { monthDaysLeap(m-1)._2 }
     val hoursInMonth = days*24
     if(h<=hoursInMonth){ val d:Double = h/24.0; val d1=d.toInt;
          val hr = (24*(d-d1)).toInt; y+"-"+m+"-"+d1+" "+hr+":"+"00" 
     }
     else "Invalid Data"
    }

测试:

scala> getTimeStamp(2017,11,570)
res36: String = 2017-11-23 18:00

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM