c# - 如何在 C# 中以 day.month.year 格式读取日期?
问题描述
我想从控制台读取格式为 day.month.year 的日期。
例如,
startDate = 1.05.2016
和
secondDate = 5.05.2016
当我运行我的代码并输入它们时,我得到了 System.FormatException。我怎样才能阅读它们?
var startDate = DateTime.ParseExact(Console.ReadLine(), "dd.m.yyyy", CultureInfo.InvariantCulture);
var endDate = DateTime.ParseExact(Console.ReadLine(), "dd.m.yyyy", CultureInfo.InvariantCulture);
解决方案
两件事情;
- 您需要使用格式
"d"
说明符,而不是dd
因为您的个位数天没有前导零。 - 自定义日期和时间说明符区分大小写。
m
和mm
是分钟,但M
和MM
是几个月。
根据您的输入,d.MM.yyyy
解析格式似乎正确。
我得到了一个程序(现有源代码),旨在计算以 day.month.year 格式给出的两个日期之间的非工作日(例如,在 1.05.2015 和 15.05.2015 之间,有 5 个非工作日 - 星期六和星期日)。我不知道如何从控制台读取它们
这很容易。首先,您需要从开始日期迭代到结束日期。其次,按照我告诉您的方式解析您当前的日期。然后检查你DateTime
的DayOfWeek
财产。如果是Saturday
或Sunday
,则为非工作日。将计数器增加 1。
举一个完整的例子;
static void Main(string[] args)
{
DateTime startDate = DateTime.ParseExact(Console.ReadLine(), "d.MM.yyyy", CultureInfo.InvariantCulture);
DateTime endDate = DateTime.ParseExact(Console.ReadLine(), "d.MM.yyyy", CultureInfo.InvariantCulture);
Console.WriteLine($"There are {EachNonWorkingDay(startDate, endDate).Count()} non-working days");
}
private static IEnumerable<DateTime> EachNonWorkingDay(DateTime fromDate, DateTime toDate)
{
for (var day = fromDate.Date; day.Date <= toDate.Date; day = day.AddDays(1))
{
if (day.DayOfWeek == DayOfWeek.Saturday || day.DayOfWeek == DayOfWeek.Sunday)
{
yield return day;
}
}
}
推荐阅读
- python - pygame“screen.fill 命令”,我把它放在哪里?
- sql - 两个 SQL 事务是否可以在读取时交错?
- macos - 在不迁移到 Metal 的情况下,现有的 OpenGL 产品是否仍然可以在 Mac 上运行?
- javascript - 使用 HTML/Javascript 更改循环文本的字体的问题
- android - Android 应用因跨应用脚本漏洞而被拒绝
- java - 当子类可序列化时,反序列化后不可序列化的超类实例字段会发生什么
- google-cloud-platform - GCP BigQuery 配额:配额何时会受到限制?
- python - Python Pandas 用左连接填充缺失的列
- sql - 如何改进我在 SQL Server 中的更新语句
- php - 正则表达式之谜。想要结果:'onetwothree'、'onetwo'、'twothree' 但不是'two'。积极的前瞻也许?用于货币提取