Ash*_*Ash 11 c# datetime telerik-open-access
我查询了如何在C#中比较/存储日期时间.请考虑以下代码:
var createdDate = DateTime.Now;
using (cr = new LanguageDictionaryRepository(ds)) {
cr.Add(new Sybrin10.Data.DTO.LanguageDictionary() {
Active = true,
CreatedDate = createdDate,
CultureCode = cultureCode,
Data = new System.Text.UTF8Encoding().GetBytes("Test")
});
cr.Save();
var y = cr.FindBy(x => x.CultureCode == cultureCode && x.CreatedDate == createdDate).FirstOrDefault();
Assert.IsNotNull(y);
Run Code Online (Sandbox Code Playgroud)
由于日期时间检查,Assert.IsNotNull失败.我希望,因为LanguageDictionary实例是使用变量的值创建的,两者将是相等的.这是使用Telerik.OpenAccess和MSSQL作为数据库层,所以我假设问题出现在那里.任何人都可以告诉我,如果有什么我缺少这个以及如何正确比较这些值.
编辑:刻度值不同但我不知道为什么因为它们都来自我只分配给一次的同一个变量.
Wil*_*lem 20
尝试使用DateTime.Equals(x.CreatedDate, createdDate)
,它可能会有所帮助.
除此之外,适当的DateTime
比较是一个大规模复杂的主题与时区,偏移,utc,当地时间和诸如此类的东西.我完全不会==
对两个看似相同的日期之间的简单比较感到惊讶.
如果Ticks
写入和读取的值不同,那么您可能会面临一个DateTimeKind
问题,即您正在写一个DateTimeKind.Local
数据库,但是要回到数据库DateTimeKind.Unspecified
.
另一个选项可能是(如果差异足够小),DateTime
数据库中的字段不足以存储与.net相同的毫秒数DateTime
:
单个刻度表示一百纳秒或一千万分之一秒.一毫秒内有10,000个刻度.
根据您的数据存储,它可能不如此详细.您的DateTime
值不是来自同一个源,一个从内存中读取,另一个从数据库中读取.
归档时间: |
|
查看次数: |
14378 次 |
最近记录: |