比较C#

时间:2016-08-22 16:46:27

标签: c# format timestamp

我正在将一些代码从Java重写为C#。不幸的是,大多数代码都被“黑客攻击”,所以我只是猜测代码是如何编写的。现在,我必须在数据库中重现一些插入..

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

Values in current database

在我的代码中,我能够获得类似的内容: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日上午10:02:47 DateTime currentTimestamp = 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;    
    } 

1 个答案:

答案 0 :(得分:2)

DB中字段的数据类型可能为string。你不应该像MSDN所说的那样具有如此高的精确度。

以下代码行生成DateTime.Now.ToString("dd-MMM-yy hh.mm.ss.ffffff tt", System.Globalization.CultureInfo.InvariantCulture).ToUpper() + "000" ,其当前日期与您提到的格式完全相同:

DateTime

以下代码行使用自定义格式string生成DateTime.ParseExact("10-AUG-10 05.02.57.347694 AM", "dd-MMM-yy hh.mm.ss.ffffff tt", System.Globalization.CultureInfo.InvariantCulture)

milliseconds

如您所见,您需要删除ParseExact部分中的这3个零,以使string处理<dl> <dt>Income:</dt> <dd>1.200,00 €</dd> <dt>Price:</dt> <dd>$31,99</dd> </dl> 值。如果您愿意,可以阅读正则表达式或硬编码。