【问题标题】:Is it possible to change the date time values dynamically while running the code in scala在scala中运行代码时是否可以动态更改日期时间值
【发布时间】:2022-01-25 23:10:08
【问题描述】:

我有如下数据:

val jsonData = "{\n  \"id\":\"" + a + "\",\n  \"Category\":\"Flink\",\n  \"eventTime\":\""+dateTime+"\"\n  \n}"

我还创建了一个获取current timestampDateTime 变量。

val dateTime:String =DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.SSS").format(LocalDateTime.now)  

现在我有一个用于创建数据集的 for 循环:

for (a <- minRange to maxRange) {
      jsonData = "{\n  \"id\":\"" + a + "\",\n  \"Category\":\"Flink\",\n  \"eventTime\":\""+dateTime+"\"\n  \n}"
      println(jsonData)
      Thread.sleep(500)
    }  

现在我想要实现的是,我想动态替换JSON 数据中eventTime 属性的值。它是记录的event time。记录到达源的时间。但是,当我尝试运行示例代码时,它给了我如下输出:

{
  "id":"10",
  "Category":"Flink",
  "eventTime":"2021-12-26 21:09:53.217"
  
}
{
  "id":"11",
  "Category":"Flink",
  "eventTime":"2021-12-26 21:09:53.217"
  
}

正如我们所见,它在代码运行时给了我时间戳,这是正确的,但是否可以像 "eventTime":"2021-12-26 21:09:55.589""eventTime":"2021-12-26 21:09:58.800" 那样动态获取它?

【问题讨论】:

  • 你知道valdef的区别吗?这甚至不是 Scala 特有的问题,如果你用 Python 重写它,你将面临同样的问题。
  • 没有。你能解释一下吗?
  • 你知道变量和函数的区别吗?您需要在每次引用 dateTime 时调用 LocalDateTime.now,而不仅仅是一次。
  • 感谢您的宝贵时间

标签: scala


【解决方案1】:

将变量 dateTime 替换为其值应该会为您获取动态 event time

for (a <- minRange to maxRange) {
  jsonData = "{\n  \"id\":\"" + a + "\",\n  \"Category\":\"Flink\",\n  \"eventTime\":\""+DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.SSS").format(LocalDateTime.now)+"\"\n  \n}"
  println(jsonData)
  Thread.sleep(500)
}

输出:

{
  "id":"0",
  "Category":"Flink",
  "eventTime":"2021-12-26 23:03:04.609"
  
}
{
  "id":"1",
  "Category":"Flink",
  "eventTime":"2021-12-26 23:03:05.114"
  
}
{
  "id":"2",
  "Category":"Flink",
  "eventTime":"2021-12-26 23:03:05.616"
  
}

【讨论】:

    猜你喜欢
    • 2012-05-22
    • 1970-01-01
    • 1970-01-01
    • 2014-07-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-09
    • 2021-12-31
    相关资源
    最近更新 更多