比较c#中的时间戳

本文关键字:时间戳 比较 | 更新日期: 2023-09-27 18:03:23

我正在将一些代码从Java重写为c#。不幸的是,大多数代码都被"黑"了,所以我只是猜测代码是如何编写的。现在,我必须复制一些插入到数据库..

我对我必须插入的时间戳有点困惑。例如,在当前数据库中,记录是:10-AUG-10 05.02.57.347694000 PM

当前数据库中的值

在我的代码中,我能够得到类似的东西:22-Aug-16 11.52.20.9857574 AM

这段代码的思想是将创建的时间戳与当前时间戳进行比较,如果第一个时间戳是在过去60秒内创建的,则执行一些操作。

第一个问题是:

我怎样才能准确地复制10-AUG-10 05.02.57.347694000,我看到所有的记录在最后都有"000",我是否需要一个if/else,或者是否有任何功能来保持最后一部分9位数长?

第二个问题:

如果它只是数字,我知道我可以从数据库检索值,然后比较,但由于格式是:10-AUG-10 05.02.57.347694000,不确定如何处理那部分

有什么建议吗?


解决方案:

看了一些评论后,我对如何处理这个问题有了更好的理解。我决定保持简单,只创建DateTime变量,然后使用减法来查看两者之间有多少分钟的差异。

例子:
DateTime guidTimestamp;//8/25/2016 10:02:47 AM

DateTime = DateTime. now;
public int calculateMinutes(DateTime dt1, DateTime dt2)   
    {  
            int min = 0;  
        try     
        {      
            min = (int)((dt1 - dt2).TotalSeconds);    
        }    
        catch (Exception ex)    
        {    
            Debug.WriteLine("Exception - Date Time error: " + ex.Message);    
        }    
        return min;    
    } 

比较c#中的时间戳

数据库中字段的数据类型可能是string。你不应该像MSDN说的那样,带这么大的精度值

下面一行代码以与您提到的完全相同的格式生成具有当前日期的string:

DateTime.Now.ToString("dd-MMM-yy hh.mm.ss.ffffff tt", System.Globalization.CultureInfo.InvariantCulture).ToUpper() + "000"

下面一行代码用自定义格式从string生成DateTime:

DateTime.ParseExact("10-AUG-10 05.02.57.347694 AM", "dd-MMM-yy hh.mm.ss.ffffff tt", System.Globalization.CultureInfo.InvariantCulture)

如您所见,您需要去掉milliseconds部分中的3个零,以使ParseExact处理string值。如果你愿意,你可以阅读正则表达式或硬编码。