You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Groovy入门:如何获取指定日期的Unix时间戳而非当前日期的

嘿,这个需求很常见,Groovy里处理指定日期转Unix时间戳其实挺简单的,我给你捋清楚步骤哈~

解决方案

核心思路是:先把你输入的日期字符串按照它的格式解析成Date对象,再将Date对象转换成Unix时间戳(也就是从1970年1月1日到该日期的秒数)。这里给你两种实用的实现方式:

方式一:Groovy简化写法(推荐)

Groovy对Java的日期处理做了简化,自带的Date.parse()方法可以直接解析日期字符串,不用手动创建格式对象,代码更清爽:

// 定义你要转换的日期字符串,以及对应的格式(必须完全匹配!)
def targetDateStr = "31-12-2020, 10:00:00"
def datePattern = "dd-MM-yyyy, HH:mm:ss"

// 解析成Date对象
Date specifiedDate = Date.parse(datePattern, targetDateStr)

// 转成Unix时间戳(把毫秒数转成秒,除以1000)
long unixTimestamp = specifiedDate.getTime() / 1000

println "指定日期的Unix时间戳:${unixTimestamp}"

方式二:标准Java兼容写法

如果你更习惯Java的编码风格,也可以用SimpleDateFormat来实现,逻辑完全一致,还能方便地处理解析异常:

import java.text.SimpleDateFormat
import java.text.ParseException

def targetDateStr = "31-12-2020, 10:00:00"
def dateFormatter = new SimpleDateFormat("dd-MM-yyyy, HH:mm:ss")

try {
    Date specifiedDate = dateFormatter.parse(targetDateStr)
    long unixTimestamp = specifiedDate.getTime() / 1000
    println "指定日期的Unix时间戳:${unixTimestamp}"
} catch (ParseException e) {
    println "日期解析出错啦!请检查输入字符串和格式是否匹配:${e.message}"
}

关键注意事项

  • 格式串必须和输入的日期字符串完全对应:比如你的输入是31-12-2020, 10:00:00,格式就要用dd-MM-yyyy, HH:mm:ss——其中dd是两位日期、MM是两位月份、yyyy是四位年份、HH是24小时制小时,逗号和空格也要一模一样,不然会解析失败。
  • 如果需要保留毫秒级精度,就不用除以1000;如果要精确到秒,除以1000即可(Groovy会自动处理整数取整)。

内容的提问来源于stack exchange,提问作者Tobitor

火山引擎 最新活动