当前位置: 首页 > news >正文

【Rust】操作日期与时间

目录

介绍

一、计算耗时

二、时间加减法

三、时区转换

四、年月日时分秒

五、时间格式化


介绍

        Rust的时间操作主要用到chrono库,接下来我将简单选一些常用的操作进行介绍,如果想了解更多细节,请查看官方文档。

        官方文档:chrono - Rust

        Cargo.toml引用:chrono = { version = "0.4", features = ["serde"] }

一、计算耗时

        Rust标准库,一般用于计算变量start和duration之间的程序运行时间,代码如下:

use std::time::{Duration, Instant};
use std::thread;fn expensive_function(seconds:u64) {thread::sleep(Duration::from_secs(seconds));
}fn main() {cost();
}fn cost(){let start = Instant::now();expensive_function(2);let duration = start.elapsed();println!("耗时: {:?}", duration);
}

二、时间加减法

        使用到chrono库的checked_add_signed方法,如果无法计算出日期和时间,方法将返回 None。比如当前时间加一天、加两周、加3小时再减4秒,代码如下:

use chrono::{Duration, Local};fn main() {// 获取当前时间let now = Local::now();println!("{}", now);let almost_three_weeks_from_now = now.checked_add_signed(Duration::days(1)).and_then(|in_2weeks| in_2weeks.checked_add_signed(Duration::weeks(2))).and_then(|in_2weeks| in_2weeks.checked_add_signed(Duration::hours(3))).and_then(|in_2weeks| in_2weeks.checked_add_signed(Duration::seconds(-4)));match almost_three_weeks_from_now {Some(x) => println!("{}", x),None => eprintln!("时间超出范围"),}match now.checked_add_signed(Duration::max_value()) {Some(x) => println!("{}", x),None => eprintln!("时间超出范围,不能计算出太阳系绕银河系中心一周以上的时间."),}
}

三、时区转换

        使用 chrono库的DateTime::from_naive_utc_and_offset 方法将本地时间转换为 UTC 标准格式。然后使用 offset::FixedOffset 结构体,将 UTC 时间转换为 UTC+8 和 UTC-2。

use chrono::{DateTime, FixedOffset, Local, Utc};fn main() {let local_time = Local::now();let utc_time = DateTime::<Utc>::from_naive_utc_and_offset(local_time.naive_utc(), Utc);let china_timezone = FixedOffset::east_opt(8 * 3600);let rio_timezone = FixedOffset::west_opt(2 * 3600);println!("本地时间: {}", local_time);println!("UTC时间: {}", utc_time);println!("北京时间: {}",utc_time.with_timezone(&china_timezone.unwrap()));println!("里约热内卢时间: {}", utc_time.with_timezone(&rio_timezone.unwrap()));
}

四、年月日时分秒

        获取当前时间年月日、星期、时分秒,使用chrono库:

use chrono::{Datelike, Timelike, Local};fn main() {let now = Local::now();let (is_common_era, year) = now.year_ce();println!("当前年月日: {}-{:02}-{:02} {:?} ({})",year,now.month(),now.day(),now.weekday(),if is_common_era { "CE" } else { "BCE" });let (is_pm, hour) = now.hour12();println!("当前时分秒: {:02}:{:02}:{:02} {}",hour,now.minute(),now.second(),if is_pm { "PM" } else { "AM" });
}

五、时间格式化

        时间格式化会用到chrono库,用format方法进行时间格式化;NaiveDateTime::parse_from_str方法进行字符串转DateTime,代码如下:

use chrono::{DateTime, Local, ParseError, NaiveDateTime};fn main() -> Result<(), ParseError>{let now: DateTime<Local> = Local::now();// 时间格式化let ymdhms =  now.format("%Y-%m-%d %H:%M:%S%.3f");// 字符串转时间let no_timezone = NaiveDateTime::parse_from_str("2015-09-05 23:56:04.800", "%Y-%m-%d %H:%M:%S%.3f")?;println!("当前时间: {}", now);println!("时间格式化: {}", ymdhms);println!("字符串转时间: {}", no_timezone);Ok(())
}

        Rust的时间与日期操作就简单介绍到这里,关注不迷路(*^▽^*)

相关文章:

【Rust】操作日期与时间

目录 介绍 一、计算耗时 二、时间加减法 三、时区转换 四、年月日时分秒 五、时间格式化 介绍 Rust的时间操作主要用到chrono库&#xff0c;接下来我将简单选一些常用的操作进行介绍&#xff0c;如果想了解更多细节&#xff0c;请查看官方文档。 官方文档&#xff1a;chr…...

blender快捷键

1&#xff0c; shift a 添加物体 2&#xff0c;ctrl alt q 切换四格视图 3, ~ 展示物体的各个视图按钮&#xff0c;&#xff08;~ 就是tab键上面的键&#xff09; 4&#xff0c;a 全选&#xff0c;全选后&#xff0c;点 ctrl 鼠标框选 减去已经选择的&#xff1b…...

java Spring Boot 自动启动热部署 (别再改点东西就要重启啦)

上文 java Spring Boot 手动启动热部署 我们实现了一个手动热部署的代码 但其实很多人会觉得 这叫说明热开发呀 这么捞 写完还要手动去点一下 很不友好 其实我们开发人员肯定是希望重启这种事不需要自己手动去做 那么 当然可以 我们就让它自己去做 Build Project 这个操作 我们…...

TouchGFX之后端通信

在大多数应用中&#xff0c;UI需以某种方式连接到系统的其余部分&#xff0c;并发送和接收数据。 它可能会与硬件外设&#xff08;传感器数据、模数转换和串行通信等&#xff09;或其他软件模块进行交互通讯。 Model类​ 所有TouchGFX应用都有Model类&#xff0c;Model类除了存…...

cesium gltf控制

gltf格式详解 glTF格式本质上是一个JSON文件。这一文件描述了整个3D场景的内容。它包含了对场景结构进行描述的场景图。场景中的3D对象通过场景结点引用网格进行定义。材质定义了3D对象的外观,动画定义了3D对象的变换操作(比如选择、平移操作)。蒙皮定义了3D对象如何进行骨骼…...

Spring的依赖注入(DI)以及优缺点

Spring的依赖注入&#xff08;DI&#xff09;&#xff1a;解释和优点 依赖注入&#xff08;Dependency Injection&#xff0c;简称DI&#xff09;是Spring框架的核心概念之一&#xff0c;也是现代Java应用程序开发的重要组成部分。本文将深入探讨DI是什么&#xff0c;以及它的…...

【强化学习】05 —— 基于无模型的强化学习(Prediction)

文章目录 简介蒙特卡洛算法时序差分方法Example1 MC和TD的对比偏差&#xff08;Bias&#xff09;/方差&#xff08;Variance&#xff09;的权衡Example2 Random WalkExample3 AB 反向传播(backup)Monte-Carlo BackupTemporal-Difference BackupDynamic Programming Backup Boot…...

【计算机组成原理】考研真题攻克与重点知识点剖析 - 第 1 篇:计算机系统概述

前言 本文基础知识部分来自于b站&#xff1a;分享笔记的好人儿的思维导图&#xff0c;感谢大佬的开源精神&#xff0c;习题来自老师划的重点以及考研真题。此前我尝试了完全使用Python或是结合大语言模型对考研真题进行数据清洗与可视化分析&#xff0c;本人技术有限&#xff…...

【Java-LangChain:面向开发者的提示工程-8】聊天机器人

第八章 聊天机器人 使用一个大型语言模型的一个令人兴奋的事情是&#xff0c;我们可以用它来构建一个定制的聊天机器人 (Chatbot) &#xff0c;只需要很少的工作量。在这一节中&#xff0c;我们将探索如何利用聊天的方式&#xff0c;与个性化&#xff08;或专门针对特定任务或…...

利用t.ppft.interval分别计算T分布置信区间[实例]

scipy.stats.t.interval用于计算t分布的置信区间&#xff0c;即给定置信水平时&#xff0c;计算对应的置信区间的下限和上限。 scipy.stats.t.ppf用于计算t分布的百分位点&#xff0c;即给定百分位数&#xff08;概率&#xff09;时&#xff0c;该函数返回给定百分位数对应的t…...

软件工程第三周

可行性研究 续 表达工作量的方式 LOC估算&#xff1a;Line of Code 估算公式S(Sopt4SmSpess)/6 FP&#xff1a;功能点 1. LOC (Line of Code) 估算 定义&#xff1a;LOC是指一个软件项目中的代码行数。 2. FP (Function Points) 估算 定义&#xff1a;FP是基于软件的功能性和…...

动态链接那些事

1、为什么要动态链接 1.1 空间浪费 对于静态链接来说&#xff0c;在程序运行之前&#xff0c;会将程序所需的所有模块编译、链接成一个可执行文件。这种情况下&#xff0c;如果 Program1 和 Program2 都需要用到 Lib.o 模块&#xff0c;那么&#xff0c;内存中和磁盘中实际上就…...

力扣:118. 杨辉三角(Python3)

题目&#xff1a; 给定一个非负整数 numRows&#xff0c;生成「杨辉三角」的前 numRows 行。 在「杨辉三角」中&#xff0c;每个数是它左上方和右上方的数的和。 来源&#xff1a;力扣&#xff08;LeetCode&#xff09; 链接&#xff1a;力扣&#xff08;LeetCode&#xff09;官…...

QGIS文章二——DEM高程裁剪和3D地形图

经常看到别人基于高程文件制作出精美的3D地图&#xff0c;笔者按照互联网几种制作方式进行尝试后&#xff0c;写的DEM高程裁剪和3D地形图教程&#xff0c;或许其中有一些错误的&#xff0c;也请指出。 本文基于海南省的shp文件和海南省DEM高程文件&#xff0c;制作海口地区的3D…...

【kubernetes】kubernetes中的StatefulSet使用

TOC 1 为什么需要StatefulSet 常规的应用通常使用Deployment&#xff0c;如果需要在所有机器上部署则使用DaemonSet&#xff0c;但是有这样一类应用&#xff0c;它们在运行时需要存储一些数据&#xff0c;并且当Pod在其它节点上重建时也希望这些数据能够在重建后的Pod上获取&…...

创建文件夹

/storage/emulated/0/代码文件/ 没有就创建 文件名命名方法&#xff1a;编号. 库 时间戳 使用Python的os模块来检查目录是否存在&#xff0c;并在不存在时创建它。下面是一个示例代码&#xff0c;演示了如何检查指定路径下的目录是否存在&#xff0c;若不存在则创建&#xf…...

点击router-link时候会发生什么?

当你点击链接或按钮时&#xff0c;将会导航到 User 组件&#xff0c;就会显示相应的用户 ID。 这里说一下执行流程&#xff0c;当点击一个 router-link 时&#xff0c;Vue Router会执行以下流程&#xff1a; 1&#xff09;点击事件触发: 当你点击 router-link 组件时&#xf…...

【Spring】@Bean方法中存在继承如何分析

文章目录 1. 提问&#xff1a;如果让您分析Spring MVC的原理&#xff0c;您如何开始分析呢2. 如何破局3. 资料参考 本文主要介绍&#xff1a;如何分析 Bean方法存在继承 或 Bean方法中存在调用子类方法。 1. 提问&#xff1a;如果让您分析Spring MVC的原理&#xff0c;您如何…...

【Vim 插件管理器】Vim-plug和Vim-vbundle的区别

- vundle是一款老款的插件管理工具 - vim-plug相对较新&#xff0c;特点是支持异步加载&#xff0c;相比vundle而言 Vim-plug 是一个自由、开源、速度非常快的、极简的 vim 插件管理器。它可以并行地安装或更新插件。你还可以回滚更新。它创建浅层克隆shallow clone最小化磁盘…...

电子计算机核心发展(继电器-真空管-晶体管)

目录 继电器 最大的机电计算机之一——哈弗Mark1号&#xff0c;IBM1944年 背景 组成 性能 核心——继电器 简介 缺点 速度 齿轮磨损 Bug的由来 真空管诞生 组成 控制开关电流 继电器对比 磨损 速度 缺点 影响 代表 第一个可编程计算机 第一个真正通用&am…...

AWS Lambda Power Tuning终极指南:使用CDK快速部署智能调优工具

AWS Lambda Power Tuning终极指南&#xff1a;使用CDK快速部署智能调优工具 【免费下载链接】aws-lambda-power-tuning AWS Lambda Power Tuning is an open-source tool that can help you visualize and fine-tune the memory/power configuration of Lambda functions. It r…...

英雄联盟智能辅助套件:重新定义MOBA游戏体验的开源工具集

英雄联盟智能辅助套件&#xff1a;重新定义MOBA游戏体验的开源工具集 【免费下载链接】League-Toolkit 兴趣使然的、简单易用的英雄联盟工具集。支持战绩查询、自动秒选等功能。基于 LCU API。 项目地址: https://gitcode.com/gh_mirrors/le/League-Toolkit League-Tool…...

高效实现Windows任务栏个性化的5个极简方案:轻量级透明化工具TranslucentTB全指南

高效实现Windows任务栏个性化的5个极简方案&#xff1a;轻量级透明化工具TranslucentTB全指南 【免费下载链接】TranslucentTB A lightweight utility that makes the Windows taskbar translucent/transparent. 项目地址: https://gitcode.com/gh_mirrors/tr/TranslucentTB …...

OpenClaw多场景实战:Qwen3-VL:30B在飞书中的5个应用案例

OpenClaw多场景实战&#xff1a;Qwen3-VL:30B在飞书中的5个应用案例 1. 为什么选择OpenClawQwen3-VL:30B组合 去年我在团队内部尝试搭建智能助手时&#xff0c;发现市面上大多数方案要么需要将敏感数据上传到第三方平台&#xff0c;要么功能过于单一。直到遇到OpenClaw这个开…...

AI智能体实战:从入门到企业级自动化应用

摘要 本文基于我过去一年多在企业级AI智能体落地的实战经验&#xff0c;从核心架构设计、从零到一的落地实战、生产环境踩坑避坑&#xff0c;到企业级进阶优化&#xff0c;完整拆解AI智能体从玩具Demo到生产级自动化应用的全流程。本文不搞空泛的理论堆砌&#xff0c;所有内容均…...

追踪Elsevier审稿进度:开源工具如何提升学术投稿效率

追踪Elsevier审稿进度&#xff1a;开源工具如何提升学术投稿效率 【免费下载链接】Elsevier-Tracker 项目地址: https://gitcode.com/gh_mirrors/el/Elsevier-Tracker 学术出版流程中&#xff0c;审稿进度的不确定性常给研究者带来困扰。Elsevier作为全球领先的学术出版…...

非隔离双向 DC/DC 变换器 buck - boost 变换器仿真探索

非隔离双向DC/DC变换器 buck-boost变换器仿真 输入侧为直流电压源&#xff0c;输出侧接蓄电池 模型采用电压外环电流内环的双闭环控制方式 可实现恒流充放电&#xff0c;且具备充放电保护装置防止过充和过放。 蓄电池充放电模式可切换 Matlab/Simulink模型在电力电子领域&#…...

智能排错助手:让快马AI分析你的openclaw安装错误并生成解决方案

最近在折腾openclaw这个工具时&#xff0c;遇到了不少安装报错的问题。作为一个经常在各类开发环境中摸爬滚打的程序员&#xff0c;我发现这类开源工具的安装过程往往隐藏着不少坑。不过这次尝试用AI辅助诊断后&#xff0c;整个排错效率提升了不少&#xff0c;这里记录下我的实…...

终极Windows音频路由指南:如何实现多设备音频分离的专业方案

终极Windows音频路由指南&#xff1a;如何实现多设备音频分离的专业方案 【免费下载链接】audio-router Routes audio from programs to different audio devices. 项目地址: https://gitcode.com/gh_mirrors/au/audio-router 你是否曾经遇到过这样的困扰&#xff1a;想…...

30分钟快速搭建企业级工作流系统:RuoYi-Flowable-Plus完整指南

30分钟快速搭建企业级工作流系统&#xff1a;RuoYi-Flowable-Plus完整指南 【免费下载链接】RuoYi-Flowable-Plus 本项目基于 RuoYi-Vue-Plus 进行二次开发扩展Flowable工作流功能&#xff0c;支持在线表单设计和丰富的工作流程设计能力。如果觉得这个项目不错&#xff0c;麻烦…...