github.com/GuanceCloud/cliutils@v1.1.21/pipeline/ptinput/funcs/md/datetime.md (about)

     1  ### `datetime()` {#fn-datetime}
     2  
     3  函数原型:`fn datetime(key, precision: str, fmt: str, tz: str = "")`
     4  
     5  函数说明:将时间戳转成指定日期格式
     6  
     7  函数参数:
     8  
     9  - `key`: 已经提取的时间戳
    10  - `precision`:输入的时间戳精度(s, ms, us, ns)
    11  - `fmt`:日期格式,提供内置日期格式且支持自定义日期格式
    12  - `tz`: 时区 (可选参数),将时间戳转换为指定时区的时间,默认使用主机的时区
    13  
    14  内置日期格式:
    15  
    16  | 内置格式      | 日期                                  | 描述                      |
    17  | ---           | ---                                   | ---                       |
    18  | "ANSI-C"      | "Mon Jan _2 15:04:05 2006"            |                           |
    19  | "UnixDate"    | "Mon Jan _2 15:04:05 MST 2006"        |                           |
    20  | "RubyDate"    | "Mon Jan 02 15:04:05 -0700 2006"      |                           |
    21  | "RFC822"      | "02 Jan 06 15:04 MST"                 |                           |
    22  | "RFC822Z"     | "02 Jan 06 15:04 -0700"               | RFC822 with numeric zone  |
    23  | "RFC850"      | "Monday, 02-Jan-06 15:04:05 MST"      |                           |
    24  | "RFC1123"     | "Mon, 02 Jan 2006 15:04:05 MST"       |                           |
    25  | "RFC1123Z"    | "Mon, 02 Jan 2006 15:04:05 -0700"     | RFC1123 with numeric zone |
    26  | "RFC3339"     | "2006-01-02T15:04:05Z07:00"           |                           |
    27  | "RFC3339Nano" | "2006-01-02T15:04:05.999999999Z07:00" |                           |
    28  | "Kitchen"     | "3:04PM"                              |                           |
    29  
    30  自定义日期格式:
    31  
    32  可通过占位符的组合自定义输出日期格式
    33  
    34  | 字符  | 示例 | 描述                                                          |
    35  | ---   | ---  | ---                                                           |
    36  | a     | %a   | 星期的缩写,如 `Wed`                                          |
    37  | A     | %A   | 星期的全写,如 `Wednesday`                                    |
    38  | b     | %b   | 月份缩写,如 `Mar`                                            |
    39  | B     | %B   | 月份的全写,如 `March`                                        |
    40  | C     | %c   | 世纪数,当前年份除 100                                        |
    41  | **d** | %d   | 一个月内的第几天;范围 `[01, 31]`                             |
    42  | e     | %e   | 一个月内的第几天;范围 `[1, 31]`,使用空格填充                |
    43  | **H** | %H   | 小时,使用 24 小时制; 范围 `[00, 23]`                        |
    44  | I     | %I   | 小时,使用 12 小时制; 范围 `[01, 12]`                        |
    45  | j     | %j   | 一年内的第几天,范围 `[001, 365]`                             |
    46  | k     | %k   | 小时,使用 24 小时制; 范围 `[0, 23]`                         |
    47  | l     | %l   | 小时,使用 12 小时制; 范围 `[1, 12]`,使用空格填充           |
    48  | **m** | %m   | 月份,范围 `[01, 12]`                                         |
    49  | **M** | %M   | 分钟,范围 `[00, 59]`                                         |
    50  | n     | %n   | 表示换行符 `\n`                                               |
    51  | p     | %p   | `AM` 或 `PM`                                                  |
    52  | P     | %P   | `am` 或 `pm`                                                  |
    53  | s     | %s   | 自 1970-01-01 00:00:00 UTC 来的的秒数                         |
    54  | **S** | %S   | 秒数,范围 `[00, 60]`                                         |
    55  | t     | %t   | 表示制表符 `\t`                                               |
    56  | u     | %u   | 星期几,星期一为 1,范围 `[1, 7]`                             |
    57  | w     | %w   | 星期几,星期天为 0, 范围 `[0, 6]`                             |
    58  | y     | %y   | 年份,范围 `[00, 99]`                                         |
    59  | **Y** | %Y   | 年份的十进制表示                                              |
    60  | **z** | %z   | RFC 822/ISO 8601:1988 风格的时区 (如: `-0600` 或 `+0100` 等) |
    61  | Z     | %Z   | 时区缩写,如 `CST`                                            |
    62  | %     | %%   | 表示字符 `%`                                                  |
    63  
    64  示例:
    65  
    66  ```python
    67  # 待处理数据:
    68  #    {
    69  #        "a":{
    70  #            "timestamp": "1610960605000",
    71  #            "second":2
    72  #        },
    73  #        "age":47
    74  #    }
    75  
    76  # 处理脚本
    77  json(_, a.timestamp)
    78  datetime(a.timestamp, 'ms', 'RFC3339')
    79  ```
    80  
    81  ```python
    82  # 处理脚本
    83  ts = timestamp()
    84  datetime(ts, 'ns', fmt='%Y-%m-%d %H:%M:%S', tz="UTC")
    85  
    86  # 输出
    87  {
    88    "ts": "2023-03-08 06:43:39"
    89  }
    90  ```
    91  
    92  ```python
    93  # 处理脚本
    94  ts = timestamp()
    95  datetime(ts, 'ns', '%m/%d/%y  %H:%M:%S %z', "Asia/Tokyo")
    96  
    97  # 输出
    98  {
    99    "ts": "03/08/23  15:44:59 +0900"
   100  }
   101  ```