C# C语言中的日期比较#
我目前正在做一个小项目,我遇到了一个小问题。 我希望我的程序在启动时调用方法C# C语言中的日期比较#,c#,datetime,date,C#,Datetime,Date,我目前正在做一个小项目,我遇到了一个小问题。 我希望我的程序在启动时调用方法CheckDate。 此方法将读取.txt文件,以查看上次保存的日期(yyyy/mm/dd)格式。 然后它会将它与今天的日期进行比较,如果不一样的话,继续做一些说明。我已经阅读了文档,但找不到最适合我需要的方法 问题1:有没有办法以(yyyy/mm/dd)格式获取今天的日期 问题2:用C#比较日期最简单的方法是什么 提前谢谢 用C#比较日期最简单的方法是什么 不要将它们存储为文本,而是存储在DatteTime中 比较变量
CheckDate
。
此方法将读取.txt文件,以查看上次保存的日期(yyyy/mm/dd)格式。
然后它会将它与今天的日期进行比较,如果不一样的话,继续做一些说明。我已经阅读了文档,但找不到最适合我需要的方法
问题1:有没有办法以(yyyy/mm/dd)格式获取今天的日期
问题2:用C#比较日期最简单的方法是什么
提前谢谢
用C#比较日期最简单的方法是什么
不要将它们存储为文本,而是存储在DatteTime中
比较变量
如果两者都有时间,比较a.Date==b.Date
有没有办法以(yyyy/mm/dd)格式获取今天的日期
对。但这是错误的。分析错误的输入并比较分析的数据。有一个
日期时间。比较您可以使用的方法-这也应该允许您使用内置的运算符。根据问题的字母:
1:
2:
您这样做是为了计算机阅读,而不是人类阅读,因此请使用标准格式而不是传统格式(ISO中的标准格式,但除朝鲜外的所有国家都将其作为国家标准):yyy-MM-dd(编辑:我知道你在加拿大,出于技术目的,CSA Z234.5:1989是日期时间的相关国家标准;它说使用yyyy-MM-dd)
您应该反过来做,读取字符串,解析日期,并进行比较
您可能需要查看…您可以将LastWriteTime成员与DateTime进行比较。今天您只需格式化日期,即可将今天的日期作为字符串获取
1. DateTime.Now.ToString("yyyy/MM/dd")
2. DateTime.Parse(input).Date == DateTime.Now.Date
String today = String.Format("{0: yyyy/MM/dd}", DateTime.Now);
String today = DateTime.Now.ToString("yyyy/MM/dd");
我建议不要使用文本文件作为保存数据的手段,但如果使用该系统,唯一需要做的就是检查文本文件中的日期是否与格式化的日期匹配。只需比较格式化的字符串即可
如果(字符串a==字符串b)
您甚至可以将其放在一行中,而不必单独格式化内容
if (DateTime.Now.ToString("yyyy/MM/dd").Equals("date pulled from txt file"))
//使用TimeSpan执行类似的操作
strCurDate = string.Format(DateTime.Now.ToString(), "yyyy/mm/dd");
FileInfo fiUpdateFileFile = null;
fiUpdateFileFile = new FileInfo(YourFile Location + Your FileName);
if (((TimeSpan)(DateTime.Now - fiUpdateFileFile.LastWriteTime)).TotalHours < 24)
{
// do your logic here...
}
// you could also get at DateTime.Now.Date() or Day.. depending on what you want to do
strCurDate=string.Format(DateTime.Now.ToString(),“yyyy/mm/dd”);
FileInfo fiUpdateFileFile=null;
fiUpdateFileFile=新文件信息(文件位置+文件名);
if(((TimeSpan)(DateTime.Now-fiupdatefile.LastWriteTime)).TotalHours<24)
{
//你的逻辑在这里。。。
}
//您还可以在DateTime.Now.Date()或Day..获取,具体取决于您要执行的操作
输出:
格式化日期:2011/12/15
日期差异:
总天数:1.42889802083333;总小时数:34.2935525;总分钟数:2057.61315;总秒数:
123456.789;总毫秒数:123456789
*编辑了我最初的帖子,以澄清“总数”是如何计算的属性起作用。您当前如何读取字符串?您需要将其解析为DateTime
对象,并将其与DateTime进行比较。今天
。不要尝试将DateTime。今天
转换为字符串并以这种方式进行比较。DateTime
对象具有许多内置的日期/时间函数逻辑我现在在我的.txt文件中一行一行地阅读它。你如何将DateTime
存储为DateTime
文件中的DateTime
,正如OP所要求的那样?好吧,但我对这一点有点陌生。如果我没有弄错的话,streamwriter和streamreader正在使用字符串否?这就是为什么我一直坚持转换的原因我怎么能在我的.txt文件中存储datetime呢?@KirkWoll我本来应该怎么问的。datetime.Parse(input.Date
-有一个运行时错误正在等待发生:)他说最简单的方法,他没有说任何关于验证的内容:D。另外,找到TryParse并不是一个巨大的飞跃。这也会起作用,但是查看TotalHours属性,当将它与当前日期时间进行比较时,或者在您的示例中使用时间戳进行d2-d1时,它会得出一天中的真实小时数/总小时数。好吧,但是因为我必须在//做逻辑部分,我将如何写新的日期?或者写任何int将改变LastWriteTime
?,除非它不起作用。查看最后一次文件写入时间的想法很好,但是strCurDate是错误的(在我现在运行它的系统上,结果是“YYYY-12-DD”),并且无论如何都没有使用。此外,“今天之前的最后更新”(在问题中)与过去24小时内的更新不同,在您的回答中,可以进行夏令时更改。谢谢@Jon我将使用其他逻辑您可以始终使用日期时间。现在写入取决于您要写入的过程中的位置。。如果文件被打开,您将关闭它,并在此时创建FileInfo对象,捕获LastWriteTime并将其存储在字符串变量中。。但是如果你必须把它写入一个文件。。在关闭文件之前添加日期时间。。有道理。。?对于格式,通常使用小写的yyyymmdi更喜欢这种方法yyyymmdd
将是年份,然后是分钟,然后是日期。在我的系统中,这将给出2011-12-15。尽管我认为他们无论如何都应该在这样的环境中使用这种格式,但由于系统设置的变化,他们不应该使用这种格式。您想转义到@“yyyy\/MM\/dd”
以保证/
而不是系统日期分隔符。@JonHanna只要您以相同的方式解析两个日期,这就不重要了。@Chase这正是问题所在。在很长一段时间内,这台机器会以“2011/12/16”格式编写和解析您的字符串,因为默认设置为dd/MM/yyyy,然后/
会转到/
。我改变了,因为我更喜欢标准格式,所以现在需要y
String today = String.Format("{0: yyyy/MM/dd}", DateTime.Now);
String today = DateTime.Now.ToString("yyyy/MM/dd");
if (DateTime.Now.ToString("yyyy/MM/dd").Equals("date pulled from txt file"))
strCurDate = string.Format(DateTime.Now.ToString(), "yyyy/mm/dd");
FileInfo fiUpdateFileFile = null;
fiUpdateFileFile = new FileInfo(YourFile Location + Your FileName);
if (((TimeSpan)(DateTime.Now - fiUpdateFileFile.LastWriteTime)).TotalHours < 24)
{
// do your logic here...
}
// you could also get at DateTime.Now.Date() or Day.. depending on what you want to do
DateTime d1 = DateTime.Now;
DateTime d2 = d1.AddMilliseconds(123456789);
string formattedDate = d1.ToString("yyyy/MM/dd");
TimeSpan ts = d2 - d1;
double dayDiff = ts.TotalDays;
double hourDiff = ts.TotalHours;
double minuteDiff = ts.TotalMinutes;
double secondDiff = ts.TotalSeconds;
double milDiff = ts.TotalMilliseconds;
Console.WriteLine("Formatted Date: {0}\r\nDate Diff:\r\nTotal Days: {1}; Total Hours: {2}; Total Minutes: {3}; Total Seconds: {4}; Total Milliseconds: {5}", formattedDate,dayDiff,hourDiff,minuteDiff,secondDiff,milDiff);