万年历——ASP.NETCORE写法

简介: 万年历——ASP.NETCORE写法



题目要求:

创建.NET Core控制台应用程序实现万年历,通过输入的年份和月份在控制台中打印出指定年份和月份的日历。

实现代码:

//做一个万年历
Console.WriteLine("请输入年份:");
string year = Console.ReadLine();
Console.WriteLine("请输入月份:");
string month = Console.ReadLine();
//获取星期几,这个月多少天
DateTime dt = DateTime.Parse(string.Format("{0}-{1}-1", year, month));
int week = (int)dt.DayOfWeek;
int monthsDay = DateTime.DaysInMonth(int.Parse(year), int.Parse(month));
Console.WriteLine("星期日\t星期一\t星期二\t星期三\t星期四\t星期五\t星期六\t");
for (int i = 0; i < week; i++)
{
    Console.Write("\t");
}
for (int i = 0; i < monthsDay; i++)
{
    Console.Write((i + 1) + "\t");
    if ((i + week + 1) % 7 == 0)
    {
        Console.WriteLine();
    }
}

代码解析:

1、需要在控制台录入年份以及月份的两个信息。

string year = Console.ReadLine();

string month = Console.ReadLine();

2、需要根据年月计算当前月的一号是星期几。

获取具体的DateTime格式时间戳:

DateTime dt = DateTime.Parse(string.Format("{0}-{1}-1", year, month));

根据具体的DateTime来获取对应1号的星期。

int week = (int)dt.DayOfWeek;

由于是枚举类型,故而可以直接使用强转来处理类型的变化。我们可得到int类型的星期。

3、根据年月来计算当前月的最大天数是多少。

int monthsDay = DateTime.DaysInMonth(int.Parse(year), int.Parse(month));

使用这个方法免去了计算闰年的过程。相对效率会高很多。

4、遍历的制表符\t处理。

for (int i = 0; i < week; i++)

{

   Console.Write("\t");

}

这里我们使用的week是1号的具体星期,我们的星期排布方式是:

"星期日\t星期一\t星期二\t星期三\t星期四\t星期五\t星期六\t"

5、每星期换一次行。

for (int i = 0; i < monthsDay; i++)

{

   Console.Write((i + 1) + "\t");

   if ((i + week + 1) % 7 == 0)

   {

       Console.WriteLine();

   }

}

可以看到在遍历的过程中对(i+week+1)进行求余7的操作。如果结果是0直接换行即可。

效果示例:

输入年份与月份,得出当前月的万年月。

实际日历:

这个是从实际2023年2月的日历,与咱们遍历的是一致的,计算好对应的星期起始很重要。

 

相关文章
|
资源调度 JavaScript API
uniapp项目vue2升级vue3
uniapp项目vue2升级vue3
1049 0
|
1月前
|
文字识别 测试技术 开发者
Qwen3-VL新成员 2B、32B来啦!更适合开发者体质
Qwen3-VL家族重磅推出2B与32B双版本,轻量高效与超强推理兼备,一模型通吃多模态与纯文本任务!
1845 12
|
11月前
|
物联网 调度 vr&ar
鸿蒙HarmonyOS应用开发 |鸿蒙技术分享HarmonyOS Next 深度解析:分布式能力与跨设备协作实战
鸿蒙技术分享:HarmonyOS Next 深度解析 随着万物互联时代的到来,华为发布的 HarmonyOS Next 在技术架构和生态体验上实现了重大升级。本文从技术架构、生态优势和开发实践三方面深入探讨其特点,并通过跨设备笔记应用实战案例,展示其强大的分布式能力和多设备协作功能。核心亮点包括新一代微内核架构、统一开发语言 ArkTS 和多模态交互支持。开发者可借助 DevEco Studio 4.0 快速上手,体验高效、灵活的开发过程。 239个字符
961 13
鸿蒙HarmonyOS应用开发 |鸿蒙技术分享HarmonyOS Next 深度解析:分布式能力与跨设备协作实战
|
8月前
|
SQL 安全 关系型数据库
mysql注入-字符编码技巧
通过字符编码技巧,攻击者可以在SQL注入中绕过常见的输入验证机制,成功攻击数据库。因此,理解这些技巧及其可能的攻击路径,对防御SQL注入至关重要。开发者应采取多层次的安全措施,确保应用程序在不同字符集和编码环境下都能有效防御注入攻击。通过强制使用统一编码、严格的输入验证、预编译语句以及多层次的编码检查,可以有效地提高系统的安全性,防止SQL注入攻击带来的风险。
322 72
|
11月前
|
消息中间件 存储 中间件
说说MQ在你项目中的应用(二)商品支付
本文总结了消息队列(MQ)在支付订单业务中的应用,重点分析了RabbitMQ的优势。通过异步处理、系统解耦和流量削峰等功能,RabbitMQ确保了支付流程的高效与稳定。具体场景包括用户下单、支付请求、商品生产和物流配送等环节。相比Kafka,RabbitMQ在低吞吐量、高实时性需求下表现更优,提供了更低延迟和更高的可靠性。
359 0
|
JSON 安全 数据安全/隐私保护
从0到1搭建权限管理系统系列三 .net8 JWT创建Token并使用
【9月更文挑战第22天】在.NET 8中,从零开始搭建权限管理系统并使用JWT(JSON Web Tokens)创建Token是关键步骤。JWT是一种开放标准(RFC 7519),用于安全传输信息,由头部、载荷和签名三部分组成。首先需安装`Microsoft.AspNetCore.Authentication.JwtBearer`包,并在`Program.cs`中配置JWT服务。接着,创建一个静态方法`GenerateToken`生成包含用户名和角色的Token。最后,在控制器中使用`[Authorize]`属性验证和解析Token,从而实现身份验证和授权功能。
1102 4
|
开发框架 .NET API
在IIS上部署ASP.NET Core Web API和Blazor Wasm详细教程
在IIS上部署ASP.NET Core Web API和Blazor Wasm详细教程
785 3
|
消息中间件 开发框架 .NET
Asp.net core Webapi 如何执行定时任务?
Asp.net core Webapi 如何执行定时任务?
244 0
|
数据采集 JSON JavaScript
JS逆向-反反爬案例
破解爬虫JS加密反爬, 逆向JS解析
|
图形学
【推荐100个unity插件之17】具有可破坏/砍倒unity地形树木能力的破坏系统,实现unity砍树效果 —— DestroyIt - Destruction System
【推荐100个unity插件之17】具有可破坏/砍倒unity地形树木能力的破坏系统,实现unity砍树效果 —— DestroyIt - Destruction System
793 0