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

如何在Scala中以没有空格的字符串形式获取当前时间戳?

  •  9
  • osk  · 技术社区  · 6 年前

    例如,我想获取当前时间的字符串:“20180122\u 101043”。我该怎么做?

    我可以创建 val cal = Calendar.getInstance() 但我不知道以后该怎么办。

    4 回复  |  直到 6 年前
        1
  •  28
  •   prayagupa soxunyi    6 年前

    LocalDateTime 是您可能想要使用的,

    scala> import java.time.LocalDateTime
    import java.time.LocalDateTime
    
    scala> LocalDateTime.now()
    res60: java.time.LocalDateTime = 2018-01-22T01:21:03.048
    

    如果不希望使用默认值 LocalDateTime 格式,基本上 ISO format 如果没有区域信息,您可以申请 DateTimeFormatter 如下所示,

    scala> import java.time.format.DateTimeFormatter
    import java.time.format.DateTimeFormatter
    
    scala> DateTimeFormatter.ofPattern("yyyy-MM-dd_HH:mm").format(LocalDateTime.now)
    res61: String = 2018-01-22_01:21
    

    相关资源 - How to parse/format dates with LocalDateTime? (Java 8)

        2
  •  11
  •   Sergii Lagutin    6 年前

    Calendar 不是这里最好的选择。使用:

    • java.util.Date + java.text.SimpleDateFormat 如果您有java 7或更低版本

      new SimpleDateFormat("YYYYMMdd_HHmmss").format(new Date)

    • java.time.LocalDateTime + java.time.format.DateTimeFormatter 对于java 8+ LocalDateTime.now.format(DateTimeFormatter.ofPattern("YYYYMMdd_HHmmss"))
        3
  •  3
  •   user9223219 user9223219    6 年前

    您可以使用Java 8日期/时间API:

    import java.time.LocalDateTime
    import java.time.format.DateTimeFormatter
    
    val format = "yyyyMMdd_HHmmss"
    
    val dtf = DateTimeFormatter.ofPattern(format)
    
    val ldt = LocalDateTime.of(2018, 1, 22, 10, 10, 43) // 20180122_101043
    
    ldt.format(dtf)
    

    要获取当前时间,请使用 LocalDateTime.now() .

        4
  •  1
  •   Galuoises    3 年前

    您可以使用 java.time 图书馆例如:

    import java.time
    val s: String = time.LocalDateTime.now().toString
    println(s)
    

    给予 2021-04-23T14:13:01.163869 . 然后需要操纵字符串,例如。

    time.LocalDateTime.now().toString.replace("T","_").replace("-","").replace(":","")
    

    对于 20210423_141639.769222 .