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

Rust中Local::now()在armv7目标设备始终返回UTC时间的问题

Rust chrono库在armv7设备上Local::now()返回UTC时间的问题

主机系统上,以下Rust代码可正常返回本地时间:

use chrono::{Local};

fn main()
{
let local_dt = Local::now();
println!("local_dt {}", local_dt);
}

输出:

local_dt 2024-06-10 16:13:46.339768796 -04:00

但在armv7-unknown-linux-gnueabihf目标设备上运行时,该代码始终返回UTC时间。目标设备的**/etc/TZ已配置为*"EST5EDT,M3.2.0,M11.1.0"***,执行date命令可显示正确本地时间:

Mon Jun 10 16:14:27 EDT 2024

通过extern调用C代码可正确获取本地时间,但原生Rust代码仅返回UTC时间:

C代码部分:

int print_time ()
{
   time_t rawtime;
   struct tm *info;
   time( &rawtime );
   info = localtime( &rawtime );
   printf("Current local time and date: %s", asctime(info));
   return(0);
}

Rust调用部分:

extern "C" { fn print_time(); }
...
let local_dt = Local::now();
println!("local_dt {}", local_dt);
unsafe{ print_time(); }

输出:

local_dt 2024-06-10 20:30:15.344901619 +00:00

Current local time and date: Mon Jun 10 16:30:15 2024

尝试直接设置TZ环境变量后,C代码输出改变,但Rust即时调用仍返回UTC:

let local_dt = Local::now();
println!("local_dt {}", local_dt);
unsafe{ print_time(); }

let key = "TZ";
println!("TZ {:?}", env::var(key));
env::set_var(key, "PST8PDT,M3.2.0,M11.1.0");
println!("TZ {:?}", env::var(key));

let local_dt = Local::now();
println!("local_dt {}", local_dt);
unsafe{ print_time(); }

输出:

local_dt 2024-06-10 20:38:46.517170940 +00:00

Current local time and date: Mon Jun 10 16:38:46 2024

TZ Err(NotPresent)

TZ Ok("PST8PDT,M3.2.0,M11.1.0")

local_dt 2024-06-10 20:38:46.517983048 +00:00

Current local time and date: Mon Jun 10 13:38:46 2024

编辑补充:发现设置TZ后需延迟调用,应用运行期间后续调用Local::now()可返回正确本地时间:

local_dt 2024-06-10 13:47:29.738219435 -07:00

Current local time and date: Mon Jun 10 13:47:29 2024

TZ Ok("PST8PDT,M3.2.0,M11.1.0")

TZ Ok("PST8PDT,M3.2.0,M11.1.0")

local_dt 2024-06-10 13:47:29.739639177 -07:00

Current local time and date: Mon Jun 10 13:47:29 2024

现寻求更符合Rust风格的解决方案。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 09:54:53