- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试获取上次修改文件的时间,但出现未找到字段的错误。
use std::{fs, io, time};
fn main() -> io::Result<()> {
let metadata = fs::metadata("foo.txt")?;
let _time: time::SystemTime = metadata.modified().unwrap();
let last_modified = _time.tv_sec;
println!("{:?}", last_modified);
Ok(())
}
error[E0609]: no field `tv_sec` on type `std::time::SystemTime`
--> src/main.rs:6:31
|
6 | let last_modified = _time.tv_sec;
| ^^^^^^ unknown field
我也尝试过在不展开的情况下使用结果,但后来我到达了我想要访问结构的 tv_sec
字段的相同点。
作为解包前的引用,结果是 Ok(SystemTime { tv_sec: 000, tv_nsec: 000 })
解包后它只是 SystemTime { tv_sec: 000, tv_nsec: 000 } )
。
我是 Rust 的新手,但我已经梳理了文档,从文档看来我应该能够像那样访问 SystemTime
结构的字段。
最佳答案
您无法访问 tv_sec
,因为该字段不公开。这称为可见性,您可以在 chapter 7.2 of the book 中阅读相关信息.
您只能在 SystemTime
上调用公共(public)方法,它可以在 API of SystemTime
中找到.
出现“奇怪”错误消息的原因是,尽管调试表示表明它是一个“扁平”结构(例如,它有两个字段 tv_sec
和 tv_nsec
), it is actually a tuple struct ,这意味着您必须调用 .0
来获取内部字段,这将导致错误
error[E0616]: field `0` of struct `std::time::SystemTime` is private
--> src/main.rs:10:22
|
10 | println!("{:?}", time.0);
| ^^^^^^
这样做是为了在不同的操作系统上进行抽象;例如,Windows 处理时间的方式与 Unix 不同。
如果您想以秒为单位获得“年龄”,您可以将其转换为 Duration
通过使用 SystemTime::elapsed
这将返回 Duration
,您可以在其中使用 Duration::as_secs
获取秒数.
关于rust - 字段 tv_sec 在 struct SystemTime 中不存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55849295/
我有一个 SYSTEMTIME,我正在尝试从中获取包含日期和时间值的本地化字符串。 API(例如 GetDateFormat/GetTimeFormat)获取日期或时间 - 但不能同时获取两者。 是否
例如,我的代码如下。 void main() { SYSTEMTIME LocalTime_Start = { 0 }; GetLocalTime( &LocalTime
以下代码的目标是调用 Win32 函数 FileTimeToSystemTime: pub fn convert_times(s: SystemTime) -> Option { let mu
看来我无法将 SystemTime 转换为字符串。我必须使用 SystemTime,因为我需要从 std::fs::Metadata::created() 返回的值。 最佳答案 您应该使用 Chron
我正在对一个用 C++ 编写的大型解决方案进行跨平台编译,从 VS2010 到 linux 环境。 我的问题是:linux 中最接近 struct SYSTEMTIME 的等价物是什么? typede
如果提供了日期(月-日-年),是否可以使用 SYSTEMTIME 确定星期几?或者此结构仅是单向的? 如果 SYSTEMTIME 无法完成(使用 Win32),什么是最轻量级的方法来完成我要问的? 最
我有一个用 SYSTEMTIME 表示的时间值,我想从中加/减 1 小时并得到新获得的 SYSTEMTIME。我希望转换应该注意加法/减法或月份变化或 e1 年变化的日期变化。 如果有一些在 SYST
我想获得两个 SYSTEMTIME 变量之间的差异。我以前在这里看到有人问过这个问题,但他被告知将两个 SYSTEMTIME 结构都转换为 FILETIME..有没有其他方法来获得差异? SYSTEM
这个问题在这里已经有了答案: How can I get the current time in milliseconds? (7 个回答) 1年前关闭。 我正在尝试创建一个为实体分配唯一标识符的系统
在 native C++ 应用程序中的 Windows Mobile(但我猜它在 Windows 上是相同的)上,我将如何正确设置 SYSTEMTIME 结构?假设我有 int year, month
这个问题在这里已经有了答案: 关闭 10 年前。 Possible Duplicate: Is there a function like asctime_s() that works for SY
在我的 C++ Windows 应用程序中,我将 SYSTEMTIME 转换为格式化字符串,如下所示: SYSTEMTIME systemTime; GetSystemTime(&sy
我想问一下是否有人有一些好的算法(或方法)来检查两个 SYSTEMTIME 变量是否有 30 天或更长时间的差异? 谢谢 最佳答案 作为MSDN page在 SYSTEMTIME 上说, It is
有没有办法确定已转换为 SystemTime 值的 DATE 数据类型的时区? 假设一个使用 COM 库的 C# 文件设置以下值: someComInterface.someDateAttribute
说现在是 6 点,我有一个 Timer 并在 10 点安排了一个 TimerTask。之后,System DateTime 被其他服务(例如 ntp)调整为 9 点钟。我仍然希望我的 TimerTas
我正在使用 Windows,我只是运行了命令: C:\Sites\cmply>gem install SystemTimer -v '1.2.3' 我收到了这个错误: Temporarily enha
我想检查很多文件的 LastWriteTimes 是否与系统昨天的日期相同。我的问题是如何以 SYSTEMTIME 格式设置昨天的日期时间。以下是我的代码。 bool checkLastWri
我想从 COleDateTime 对象中获取年份和月份,并且希望它尽可能快。我有 2 个选择; COleDateTime my_date_time; int year = my_date_time.G
我想获取相对于 MFC 中当前系统时间的 UTC 或 GMT 时间。我已经尝试使用 CTime 的 GetGmtTm(),如下所示 struct tm* osTime=NULL; tm t1 =
我不想使用 WMI 获取上次启动时间,而是想使用 ::GetSystemTime() 和 ::GetTickCount64 来计算它。但是一旦达到毫秒,我就不知道如何返回到 FILETIME 对象。
我是一名优秀的程序员,十分优秀!