Rust : 生成日历管理markdown文件的小工具

embedded/2024/12/26 21:42:03/

需求:
拟生成以下markdown管理小工具,这也是我日常工作日程表。
在这里插入图片描述可以输入任意时间段,运行后就可以生成以上的markdown文件。

一、toml

[package]
name = "rust-workfile"
version = "0.1.0"
edition = "2021"[dependencies]
chrono ="0.4.38"

二、main.rs
// 假设 从2025-01-01到2016-01-01

use std::fs::OpenOptions;
use std::collections::HashMap;
use std::io::Write;
use chrono::prelude::*;
fn main() {let file_name = "./workfile_2025.md" ;let start_date= "2025-01-01";let end_date  = "2026-01-01";write_markdown_file(file_name,start_date,end_date);
}
fn write_markdown_file(file_name: &str,start_date:&str, end_date:&str){let mut _file = OpenOptions::new().read(true).write(true).create(true).open(file_name).unwrap();let mut buffer = String::new();buffer.push_str("# workfile \n\n");let start_date: NaiveDate = NaiveDate::parse_from_str(start_date, "%Y-%m-%d").unwrap();let end_date : NaiveDate = NaiveDate::parse_from_str(end_date, "%Y-%m-%d").unwrap();let delta_days = end_date.signed_duration_since(start_date).num_days();let weeks_num = (delta_days as f32 / 7.0 ).ceil() as usize;let start_week = start_date.week(Weekday::Mon);let first_day = start_week.first_day();let first_days = first_day.iter_weeks().take(weeks_num).collect::<Vec<NaiveDate>>();let mut month_map :HashMap<String,bool> = HashMap::new();for first_date in first_days{let format_year_month = format!("## {} \n\n",first_date.format("%Y年%m月"));if !month_map.contains_key(&format_year_month) {buffer.push_str(&format_year_month); month_map.insert(format_year_month,true);}let week_dates :Vec<NaiveDate> = first_date.iter_days().take(5).collect();//### [2024_12_2-2024-12_6]let format_week_start_end = format!("### [{}-{}] \n\n",week_dates[0].format("%Y_%m_%d"),week_dates[4].format("%Y_%m_%d"));       buffer.push_str(&format_week_start_end);// #### 周一[2024_12_2]:for week_date  in week_dates{let str_week_day = get_weekday_string(&week_date);let format_date = format!("#### {}[{}]\n\n",str_week_day,week_date.format("%Y_%m_%d"));buffer.push_str(&format_date);}}_file.write(&buffer.as_bytes()).expect("write failed!");println!("文件已经生成!");
}
fn get_weekday_string(date :&NaiveDate) ->&str{let weekday = date.weekday();let weekday_str = match weekday{Weekday::Mon => "周一",Weekday::Tue => "周二",Weekday::Wed => "周三",Weekday::Thu => "周四",Weekday::Fri => "周五",Weekday::Sat => "周六",Weekday::Sun => "周日", _ => "Unknown",};weekday_str
}

在这里插入图片描述


http://www.ppmy.cn/embedded/143233.html

相关文章

ElementPlus 组件中的 el-tree 属性

文章目录 样式模板 el-tree 组件跳转&#xff1a; 点击跳转 样式 模板 html <!-- 左侧树形列表 --> <a-col :span"4"><a-card class"card-height"><template #title><a-input-searchstyle"width: 90%"placeholder…

基于Matlab地形和环境因素的森林火灾蔓延模拟与可视化研究

森林火灾的蔓延受多种因素的影响&#xff0c;包括地形、气候条件、植被类型等。为了更好地理解火灾蔓延的动态过程&#xff0c;本文提出了一种基于地形和环境参数的森林火灾蔓延模拟方法。通过综合考虑海拔高度、湿度、温度和风速等因素&#xff0c;我们使用 MATLAB 编写了一种…

Scala 的match case 匹配元组

object test2 {//match case 匹配元组def main(args: Array[String]): Unit {// val d1 (1,2,3)val d1 (1,2,3,4) // val d1 (1,2,3,4,5)val d: Any d1 //d的类型是Anyd match {case (x,y,z) > println(s"这是一个有三个元素的元组&#xff0c;它的第二个元…

ElasticSearch 与向量数据库的结合实践:突破亿级大表查询瓶颈20241204

&#x1f4a1; ElasticSearch 与向量数据库的结合实践&#xff1a;突破亿级大表查询瓶颈 &#x1f4da; 引言 随着业务规模的不断扩大&#xff0c;传统关系型数据库在处理 亿级大表 时&#xff0c;性能瓶颈愈加凸显。关键词检索、模糊查询、多条件筛选等需求逐步升级&#xff…

深度学习Python基础(2)

二 数据处理 一般来说PyTorch中深度学习训练的流程是这样的&#xff1a; 1. 创建Dateset 2. Dataset传递给DataLoader 3. DataLoader迭代产生训练数据提供给模型 对应的一般都会有这三部分代码 # 创建Dateset(可以自定义) dataset face_dataset # Dataset部分自定义过的…

开发者如何使用GCC提升开发效率Opencv操作

看此篇前请先阅读 https://blog.csdn.net/qq_20330595/article/details/144134160?spm=1001.2014.3001.5502 https://blog.csdn.net/qq_20330595/article/details/144134160?spm=1001.2014.3001.5502 https://blog.csdn.net/qq_20330595/article/details/144216351?spm=1001…

PHP使用RabbitMQ(正常连接与开启SSL验证后的连接)

代码中包含了PHP在一般情况下使用方法和RabbitMQ开启了SSL验证后的使用方法&#xff08;我这边消费队列是使用接口请求的方式&#xff0c;每次只从中取出一条&#xff09; 安装amqp扩展 PHP使用RabbitMQ前&#xff0c;需要安装amqp扩展&#xff0c;之前文章中介绍了Windows环…

深度学习中的图片分类:ResNet 模型详解及代码实现

深度学习中的图片分类:ResNet 模型详解及代码实现 图片分类是计算机视觉中的一个经典任务,近年来随着深度学习的发展,这一领域涌现了许多强大的模型。其中,ResNet(Residual Network) 因其解决了深度神经网络训练困难的问题而备受关注。本文将介绍 ResNet 模型的基本原理…