C# 将时间差与固定时间段进行比较

C# 将时间差与固定时间段进行比较,c#,C#,我想把时差和两年的时间进行比较 public const long TwoYears = 2 * 365 * 24 * 3600; string currTime = DateTime.Now.ToString("yyyyMMddHHmmss"); string recordTime = fileName.Split('_','-').Last();// format is 'yyyyMMddHHmmss' long diff =

我想把时差和两年的时间进行比较

        public const long TwoYears = 2 * 365 * 24 * 3600;
        string currTime = DateTime.Now.ToString("yyyyMMddHHmmss");
        string recordTime = fileName.Split('_','-').Last();// format is 'yyyyMMddHHmmss'
        long diff = (long.Parse(currTime)) - (long.Parse(recordTime));
        if (diff < TwoYears)
            Console.WriteLine(fileName);
public const long两年=2*365*24*3600;
字符串currTime=DateTime.Now.ToString(“yyyyMMddHHmmss”);
string recordTime=fileName.Split(“”,“-”).Last();//格式为“yyyyMMddHHmmss”
long diff=(long.Parse(currTime))-(long.Parse(recordTime));
如果(差异<两年)
Console.WriteLine(文件名);

我做得对吗?

只需在日期上加上
-2
年,然后与任何日期进行比较

if (dateTimeVar > DateTime.Now.AddYears(-2))
{
    // code...
}

如果日期来自字符串,请使用并指定要转换的
格式。

否,因为您将日期表示为有序数字。更合适的解决方案是:

String recordTime = fileName.Split('_','-').Last();// format is 'yyyyMMddHHmmss'
DateTime recordDateTime = DateTime.ParseExact( recordTime , "yyyyMMddHHmmss", CultureInfo.InvariantCulture );

if ( recordDateTime.AddYears(2) < DateTime.Now )
{
    Console.WriteLine(fileName);
}
String recordTime=fileName.Split(“”,“-”).Last();//格式为“yyyyMMddHHmmss”
DateTime recordDateTime=DateTime.ParseExact(recordTime,“yyyyymmddhhmmss”,CultureInfo.InvariantCulture);
if(recordDateTime.AddYears(2)

编辑:从下面的注释中可以看出,最好添加年份并比较日期时间。

运算符'>'不能应用于'long'和'System.DateTime'类型的操作数@Love您不需要
long
类型。那么如何处理字符串呢?转换还是不转换?@Love
dateTimeVar
在此上下文中是一个
DateTime dateTimeVar
,如果您的日期来自字符串,请使用
DateTime转换它。Parse
将字符串转换为DateTime对象时会引发异常,因为格式为“yyyyMMddHHmmss”,只需解析字符串即可获得DateTime对象,然后与当前日期进行比较。字符串未被识别为有效的日期时间。例如:20051003205657有一些
Parse
方法来构建
DateTime
,应该使用这些方法来代替那些字符串操作。我不知道有哪些方法接受这种排序,没有破折号来分隔输入(我不想成为谷歌搜索并粘贴结果的人)。您能帮我解决一下吗:)另一个选项是手动添加破折号,然后进行分析,但仍然很难看,因为它可以将自定义模式作为参数。字符串未被识别为有效的日期时间。请重试,我错过了HH而不是HH。你确定你没有漏掉任何零吗?和HH一起工作对我来说很好。