- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在处理一些适用于天数持续时间的 Rust 代码,但根据文档,Duration::days(n)
的实现是n * 24 * 60 * 60
秒,这不是 n 天,因为并非所有天都是 24 * 60 * 60
秒。
此行为有详细记录:
pub fn days(days: i64) -> Duration
Makes a new
Duration
with given number of days. Equivalent toDuration::seconds(days * 24 * 60 * 60)
with overflow checks. Panics when the duration is out of bounds.
Rust Chrono 有没有办法获得严格来说是 1 天而不是秒数的持续时间,并且与 DateTime
类型兼容?并非所有日子的秒数都相同。 秒
和天
是完全不同的单位。如果有这样的函数,那么下面的结果总是会给出第二天同一时间的结果?
let start = Local.now();
let one_day_later = start + function_that_returns_a_duration_of_days(1);
同样,Duration:days(1)
不是这样的函数,因为它返回 1 * 24 * 60 * 60
秒,而不是1 天.
例如,将 TZ 设置为 美国/丹佛,如下:
let start = Local.ymd(2019, 3, 10).and_hms(0, 0, 0);
println!("start: {}", start);
let end = Local.ymd(2019, 3, 11).and_hms(0, 0, 0);
println!("end: {}", end);
let elapsed_seconds = end.timestamp() - start.timestamp();
println!("elapsed_seconds: {}", elapsed_seconds);
let end2 = start + Duration::days(1);
println!("end2: {}", end2);
let elapsed_seconds2 = end2.timestamp() - start.timestamp();
println!("elapsed_seconds2: {}", elapsed_seconds2);
返回:
start: 2019-03-10 00:00:00 -07:00
end: 2019-03-11 00:00:00 -06:00
elapsed_seconds: 82800
end2: 2019-03-11 01:00:00 -06:00
elapsed_seconds2: 86400
它增加了86400 秒,而不是1 天。
我可以通过以下方式获得正确结果:
let one_day_later =
(start.date() + Duration::days(1)).and_hms(start.hour(), start.minute(), start.second());
但我更喜欢一个返回天数持续时间的函数,并且通常想了解有关 Rust Chrono 处理持续时间的功能的更多信息。它是否有除秒以外的其他单位的持续时间?周、月和年又如何,它们的秒数也是可变的。
我可能应该说我不了解 Rust,只是使用了几天,而且我没有太多阅读源代码。我确实看过它,但由于我对语言的熟悉程度有限,发现很难理解。
最佳答案
Duration
是一段时间。添加到某个瞬间时,并不总是会在第二天产生相同的时间,因为正如您所注意到的,日历日中可能有不同的时间量。
不仅年、周和日,甚至小时和分钟也不总是包含相同的时间量 ( Leap second )。 Duration
是一段时间,而不是“日历单位”。所以不,Duration
无法表达“下周同一时间”之类的想法。
表达“第二天同一时间”的最简单方法是在 Date
上使用 succ
和 and_time
方法:
let one_day_later = start.date().succ().and_time(start.time());
如果新日期上的时间不存在,
and_time
将出现紧急情况。
关于rust - 如何使用 Rust chrono 获得 1 天的持续时间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59662500/
关闭。这个问题是opinion-based .它目前不接受答案。 想要改进这个问题? 更新问题,以便 editing this post 可以用事实和引用来回答它. 关闭 8 年前。 Improve
C++20 计时类型/值之间有什么区别 month{7}和 months{7} ?有两个如此相似的名字是不是很困惑? 最佳答案 是的,同时拥有 month 可能会令人困惑。和 months第一次遇到这
在我的项目中,在我升级到 VS2015 之前,它编译得很好。现在我收到 10 个与 std::chrono::timepoint 有关的错误。这些都是错误:https://gyazo.com/0d3c
在 Linux 上运行(uname 说:) Linux 2.6.32-431.29.2.el6.x86_64 #1 SMP Sun Jul 27 15:55:46 EDT 2014 x86_64 x8
下面的代码不打印epoch。 typedef std::chrono::high_resolution_clock Clock; typedef std::chrono::milliseconds M
我有这个测试代码: #include #include #include namespace chrono = std::chrono; int main() { struct time
我正在使用 jmeter 和 maven 进行性能测试 (REST)。 在我的 pom 中,我有以下插件: chronos-jmeter-maven-plugin:执行我的 jmx 项目 chrono
我有一个 chrono::format::strftime 的静态数组我的应用程序支持的格式。我想避免在运行时解析它们,所以我定义了一个 lazy_static!将它们解析为 chrono::form
我正在尝试编写一个允许用户指定 chrono::duration 的函数,例如 chrono::seconds 并返回 chrono 的结果::duration::count. 我可以使用以下模板函数
考虑以下代码片段: #include #include int main() { auto result1 = std::chrono::duration_cast(std::chron
考虑下面这段代码 #include #include #include int main() { using std::chrono::system_clock; using std
boost::chrono::steady_clock::time_point 之间有什么区别?和 boost::chrono::time_point ,为什么不能相互转换? 这似乎非常多余。 最佳答
我正在尝试在 mingw64 (GCC v11.2) 中构建我的程序。我有以下结构: 在头文件中: struct Timer { std::chrono::time_point start;
有没有什么优雅的方法可以将 boost chrono time_point 转换为标准库中的等价物? 最佳答案 恐怕你不能保证转换,除非你先验地接受 boost::chrono::steady_clo
以下程序: #include #include #include inline uint64_t now() { return std::chrono::duration_cast
我有一个变量存储为 long 来自 std::chrono::system_clock::time_point.time_since_epoch().count() 的值。我现在想从 long 变量中
extern crate chrono; use chrono::{DateTime, Utc}; use std::time::Duration; pub fn after(start: DateT
我想在几秒钟内使用 chrono 库找出 2 个时钟之间的差异。我尝试了多种方法,以下是其中之一。所有这些都工作正常,直到差异为 59 秒,但之后超时。我真的需要差异的实际值,即使它超过 59 秒 #
我试图计算执行插入排序函数期间耗时。所以我做了如下。附言- 函数运行正常并对所有数字进行排序。编译器-GCC window auto start = chrono::steady_clock:
我有一个年 (int)、月 (int) 和日 (int) 形式的日期,例如,2018、10、12 表示 2018 年 10 月 12 日。 有没有一种方法可以使用带有这些整数的 C++ Chrono
我是一名优秀的程序员,十分优秀!