比较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
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;
}
数据库中字段的数据类型可能是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
值。如果你愿意,你可以阅读正则表达式或硬编码。