You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用CDAP将/Date(时间戳+时区)/格式转换为普通日期?

在CDAP中转换.NET风格日期格式为普通日期

没问题!我来帮你搞定CDAP里这种常见的.NET JSON日期格式转换~

这种/Date(1577746800000+0100)/格式是.NET序列化JSON时常用的日期格式,核心包含两部分:毫秒级Unix时间戳,以及时区偏移(比如+0100代表UTC+1时区)。下面给你两种在CDAP里的实用处理方案:

方案1:用Wrangler快速处理(推荐)

Wrangler是CDAP内置的可视化数据转换工具,几步就能完成批量转换:

  • 第一步:提取时间戳和时区偏移
    假设你的日期字段名叫raw_date,使用parse-as-regex函数匹配格式,把关键信息提取成单独字段:

    parse-as-regex ${raw_date} '/Date\\((\\d+)([+-]\\d{4})\\)/' timestamp:string, tz_offset:string
    

    执行后会生成两个新字段:timestamp(比如1577746800000)和tz_offset(比如+0100)。

  • 第二步:转换为标准日期
    用to-date函数把提取的信息转换成你需要的可读格式,比如生成YYYY-MM-DD HH:mm:ss格式的日期:

    to-date(to-timestamp(${timestamp}, "milliseconds"), "yyyy-MM-dd HH:mm:ss", ${tz_offset})
    

    如果只需要日期部分,把格式参数改成"yyyy-MM-dd"就行。

方案2:自定义函数处理(复杂场景)

如果需要更灵活的逻辑(比如特殊格式输出、异常处理),可以用CDAP的Python/Java Transform写自定义函数,这里给个Python示例:

import re
from datetime import datetime, timedelta

def transform(record):
    raw_date = record.get('raw_date', '')
    # 匹配日期格式
    match_result = re.match(r'/Date\((\d+)([+-]\d{4})\)/', raw_date)
    
    if match_result:
        # 转换时间戳为秒级(Python datetime默认用秒)
        timestamp_ms = int(match_result.group(1))
        timestamp_s = timestamp_ms / 1000
        # 解析时区偏移
        tz_str = match_result.group(2)
        tz_hours = int(tz_str[:3])
        tz_mins = int(tz_str[3:])
        tz_delta = timedelta(hours=tz_hours, minutes=tz_mins)
        
        # 计算本地时间并格式化
        utc_datetime = datetime.utcfromtimestamp(timestamp_s)
        local_datetime = utc_datetime + tz_delta
        record['formatted_date'] = local_datetime.strftime('%Y-%m-%d %H:%M:%S')
    
    return record

测试你的示例日期

用上面的方法处理你给出的示例,结果如下(以YYYY-MM-DD格式为例):

  • /Date(1577746800000+0100)/ → 2019-12-31
  • /Date(1570572000000+0200)/ → 2019-10-09
  • /Date(1558821600000+0200)/ → 2019-05-25
  • /Date(1546297200000+0100)/ → 2018-12-31

如果在操作中遇到问题,比如字段名不匹配或者格式调整,随时调整表达式或函数里的参数就行~

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.13 08:34:26