【问题标题】:Groovy - timestamp from minutesGroovy - 分钟的时间戳
【发布时间】:2015-06-23 15:26:56
【问题描述】:

我有一个数组或时间/值返回到一个数组中,例如:

[0, 60]

以分钟为单位的时间,0 = 12:00 a.m, 60 = 1:00 a.m. 我想将这些作为时间戳存储在 oracle 数据库中。如何在 groovy 中将分钟转换为时间戳?

编辑:* 日期可以是任意的,我只需要时间部分就可以了。 编辑:* 对于上面的示例,我需要两个可能类似于此的时间戳:

1/1/1970 12:00:00.000000 AM // for 0
1/1/1970 1:00:00.000000 AM // for 60

编辑:

到目前为止,我可以得到以下信息:

TimeZone.setDefault(TimeZone.getTimeZone("UTC"))
def date = new Date(0)

给我:

Thu Jan 01 00:00:00 UTC 1970

那么现在如何根据以分钟为单位的值设置时间?

【问题讨论】:

  • 在哪一天?时间戳有一天不是吗?还有时区?

标签: oracle grails groovy timestamp


【解决方案1】:

我假设您想使用当前日期偏移量和为您的时间戳指定的分钟数。

由于新的日期或时间戳将被初始化为当前时间和日期,您可以使用它并使用数组中的值覆盖分钟字段。值 60 和更大将自动延续到小时、天等。这是一种方法:

def times = [0, 60]
def dates = times.collect { new Date().clearTime().copyWith(minute: it) }
def timestamps = dates.collect { new java.sql.Timestamp(it.time) }
println timestamps
// output: [2015-06-23 00:00:00.0, 2015-06-23 01:00:00.0]

copyWith 方法是在 groovy 2.2.0 中添加的。在旧版本中,您可以使用如下内容:

def d = new Date().clearTime()
d.minutes = 60

【讨论】:

  • time[0] = 0 对应单个时间,12:00 A.M time[1] = 60 对应单独时间 1:00 A.M
  • 您的回答也给了我以下错误:没有方法签名:java.util.Date.copyWith() 适用于参数类型:(java.util.LinkedHashMap) 值:[[hourOfDay: 0,分钟:60]]。 Stacktrace 如下:消息:没有方法签名:java.util.Date.copyWith() 适用于参数类型:(java.util.LinkedHashMap) 值:[[hourOfDay:0, minute:60]]
  • 知道了,我应该提到我正在为这个特定的应用程序使用 grails 2.0.4。谢谢!
猜你喜欢
  • 2021-12-19
  • 1970-01-01
  • 2018-10-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多