Karate框架或JS中如何将epoch时间戳转换为指定格式日期
Epoch秒级时间戳转指定格式日期实现方案
核心前置说明:你给出的时间戳1685595600是秒级Unix时间戳,JS原生Date对象默认接收毫秒级时间戳,转换前必须乘以1000做单位换算,否则会得到1970年附近的错误结果。另外JS中Date的月份返回值范围是0-11,需要手动+1才是自然月数值,个位数的日、月要补前导零才能满足两位输出要求。
原生JavaScript环境实现
直接用原生Date API即可,不需要引入第三方依赖:
const targetTimestamp = '1685595600'; // 转数字、乘1000转毫秒生成日期实例 const d = new Date(Number(targetTimestamp) * 1000); // 补零处理日、月字段 const day = String(d.getDate()).padStart(2, '0'); const month = String(d.getMonth() + 1).padStart(2, '0'); const year = d.getFullYear(); // 拼接为要求的格式 const output = `date = ${day} Month = ${month} year = ${year}`; console.log(output); // 打印结果:date = 01 Month = 06 year = 2023
如果运行环境不支持padStart(非常老的JS版本),可以手动写补零逻辑:
const pad2 = num => num < 10 ? `0${num}` : num; const day = pad2(d.getDate()); const month = pad2(d.getMonth() + 1);
Karate框架环境实现
Karate内置了JS运行引擎,同时支持直接调用Java时间API,两种写法都可以。
写法1:纯JS逻辑(和原生JS逻辑一致)
直接在feature文件中定义转换函数即可:
Feature: 时间戳转换示例 Scenario: 转换epoch时间戳为指定格式 * def rawTs = '1685595600' * def tsConvert = """ function(ts) { const pad2 = n => n < 10 ? '0' + n : n; const d = new Date(Number(ts) * 1000); const day = pad2(d.getDate()); const month = pad2(d.getMonth() + 1); const year = d.getFullYear(); return 'date = ' + day + ' Month = ' + month + ' year = ' + year; } """ * def convertResult = tsConvert(rawTs) * print convertResult // 控制台输出:date = 01 Month = 06 year = 2023 * match convertResult == 'date = 01 Month = 06 year = 2023'
写法2:调用Java时间API(规避时区偏差)
接口测试场景下如果需要固定时区保证结果一致性,可以直接调用Java 8+内置的时间API,不受运行环境本地时区影响:
* def rawTs = '1685595600' // 生成指定时区的时间实例,按需替换为业务需要的时区比如Asia/Shanghai * def zonedTime = java.time.Instant.ofEpochSecond(Number(rawTs)) .atZone(java.time.ZoneId.of('UTC')) * def day = String.format('%02d', zonedTime.getDayOfMonth()) * def month = String.format('%02d', zonedTime.getMonthValue()) * def year = zonedTime.getYear() * def convertResult = 'date = ' + day + ' Month = ' + month + ' year = ' + year
踩坑提示:如果转换后月份不对,先检查是不是忘了给
getMonth()的返回值+1;如果年份不对、日期差几十年,先检查是不是没把秒级时间戳乘1000转成毫秒。
内容的提问来源于stack exchange,提问作者Rahul M Rahate
相关产品推荐
相关产品推荐

