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

如何在Zig中以Sun Sep 15 10:01:02 AM CEST 2024格式显示时间日期?

在Zig中格式化时间为指定格式

要在Zig中输出类似Sun Sep 15 10:01:02 AM CEST 2024的时间格式,可以借助标准库的std.time、std.os和std.fmt模块实现,以下是完整示例代码和关键说明:

完整示例代码

const std = @import("std");

pub fn main() !void {
    // 获取当前UTC纳秒时间戳,转换为秒级用于后续处理
    const timestamp = std.time.nanoTimestamp();
    const secs = @divFloor(timestamp, std.time.ns_per_s);

    // 将秒级时间戳转换为本地时间结构体
    var tm: std.os.tms = undefined;
    const local_time = std.os.localtime(&tm, secs);

    // 定义星期、月份的英文缩写映射
    const week_days = [_][]const u8{"Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"};
    const months = [_][]const u8{"Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"};

    // 转换为12小时制并判断AM/PM
    const hour_12 = switch (local_time.tm_hour) {
        0 => 12,
        1...12 => local_time.tm_hour,
        else => local_time.tm_hour - 12,
    };
    const am_pm = if (local_time.tm_hour < 12) "AM" else "PM";

    // 获取时区缩写(如CEST),tm_isdst标记是否为夏令时
    const tz_name = std.os.tzname(local_time.tm_isdst != 0) orelse "UTC";

    // 格式化输出目标格式
    std.debug.print("{s} {s} {d:0>2} {d:0>2}:{d:0>2}:{d:0>2} {s} {s} {d}\n", .{
        week_days[local_time.tm_wday],
        months[local_time.tm_mon],
        local_time.tm_mday,
        hour_12,
        local_time.tm_min,
        local_time.tm_sec,
        am_pm,
        tz_name,
        local_time.tm_year + 1900, // tm_year是1900年起的偏移量,需加1900得到实际年份
    });
}

关键细节说明

  • 时间戳转换:std.time.nanoTimestamp()返回UTC纳秒级时间戳,需除以std.time.ns_per_s转为秒级,才能被std.os.localtime处理。
  • 本地时间结构体:std.os.localtime返回的tm结构体包含年、月、日等信息,注意tm_year是1900年起的偏移量,tm_mon是0(1月)到11(12月)的索引,tm_wday是0(周日)到6(周六)的索引。
  • 12小时制处理:通过switch判断tm_hour值转换为12小时制,同时区分AM/PM。
  • 时区缩写:std.os.tzname根据夏令时状态返回对应时区缩写,获取失败时默认用"UTC"。
  • 格式化输出:{d:0>2}确保数字不足两位时补前导零,保证格式统一。

注意事项

  • 代码依赖系统时区设置,std.os.localtime和std.os.tzname的行为受操作系统影响。
  • 如果需要强制输出指定时区(如固定CEST),Zig标准库暂无内置时区数据库支持,需手动计算偏移或使用第三方库。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 06:50:01