代码之家  ›  专栏  ›  技术社区  ›  Dinosaurius

从时间戳中提取年份时总是得到“1970”

  •  1
  • Dinosaurius  · 技术社区  · 8 年前

    val campaign_startdate_year: String = Utils.getYear(campaign_startdate_timestamp).toString

    问题是我总是得到相同的一年 1970 .这可能是什么原因?

    import com.github.nscala_time.time.Imports._
    
    def getYear(timestamp: Any): Int = {
        var dt = 2017
        if (!timestamp.toString.isEmpty)
        {
          dt = new DateTime(timestamp.toString.toLong).getYear // toLong should be multiplied by 1000 to get millisecond value
        }
        dt
      }
    

    当我想得到一个月中的某一天时,也会出现同样的问题。我明白了 17 28

      def getDay(timestamp: Any): Int = {
        var dt = 1
        if (!timestamp.toString.isEmpty)
        {
          dt = new DateTime(timestamp.toString.toLong).getDayOfYear
        }
        dt
      }
    
    3 回复  |  直到 8 年前
        1
  •  3
  •   Jesper    8 年前

    您拥有的时间戳是

    Java(和Scala)通常使用的时间戳是 毫秒

    换句话说,你需要把这个数字乘以1000。

        2
  •  1
  •   dumitru    8 年前

    您可以依赖spark sql函数中的任何一个,该函数具有一些 date utilities How to replace in values in spark dataframes after recalculations?

        3
  •  1
  •   Costi Ciudatu    8 年前

    你的时间戳似乎在 毫秒 .

    1000

    推荐文章