canonical_id: "date_ops"
display_name: "日期操作"
category: "logic"
version: "v1"
wasi_target: "preview1"
stability: "floating"
runtime_compat:
  - "cf-workers"
  - "workerd"
  - "wazero"
constraints:
  max_size_kb: 2048
  max_cold_start_ms: 50
  no_network_syscall: true
  no_filesystem_syscall: true
  io_model: "stdin_stdout_json"
input_schema:
  type: object
  required: [operation]
  properties:
    operation:
      type: string
      enum: [now, format, parse]
    input:
      type: string
      description: ISO 日期字串（now 操作可省略）
    args:
      type: object
      properties:
        layout:
          type: string
          description: Go time layout（如 2006-01-02）
output_schema:
  type: object
  properties:
    success:
      type: boolean
    data:
      type: object
      properties:
        result: {}
        operation:
          type: string
gherkin_tests:
  - scenario: "now 操作"
    given: '{"operation":"now"}'
    then_contains: '"success":true'
  - scenario: "parse 操作"
    given: '{"operation":"parse","input":"2024-01-15T10:30:00Z"}'
    then_contains: '"year":2024'
  - scenario: "無效日期"
    given: '{"operation":"parse","input":"not-a-date"}'
    then_contains: '{"success":false'
tags: [builtin, data, date, time, transform]
description: "日期操作：now（當前時間）、format（格式化）、parse（解析 ISO 字串）。"
config_example: |
  my_date_op:                             # 節點名稱（可自訂）
    operation: "format"                   # 運算類型（必填），可選值：now/format/parse
    input: "2024-01-15T10:30:00Z"        # ISO 日期字串（now 操作可省略，其餘必填）
    args:                                 # 操作參數（選填）
      layout: "2006-01-02"               # format 用：Go time layout 格式字串
