使用Cassandra CQL Poco对象映射器时的时间戳差异

时间:2015-03-07 00:01:49

标签: c# cql cassandra-2.0

这是我的班级

public class User
    {

        public string Username { get; set; }
        public DateTime RegistrationTime { get; set; }
    }

这是我的Cassandra架构

create table "Users" (
    username text primary key,
    registrationtime timestamp);

这是我的映射定义

 public class MyMappings : Mappings
{
    public MyMappings()
    {
        For<User>()
            .TableName("\"Users\"")
            .PartitionKey(u => u.Username);
    }
}

CQL映射器配置:

MappingConfiguration.Global.Define<MyDataMappings>();

我可以保存并阅读用户对象:

var user = new User() 
  {
    Username = "bob",
    RegistrationTime = DateTime.Now, 
  };

var userPrime = new Mapper(MyCluster.Instance.session).SingleOrDefault<User>("WHERE username = ?", user.Username);

除了用户和userPrime的ResistrationTime的时差大约为6小时外,一切都按预期工作。这与当地时间距离通用标准时间6小时有关。

我没有得到我保存的同一时间。我该如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

数据库中的时间戳始终为UTC。我建议使用UTC时间,并且只在准备在某处显示它们时进行本地化。

您可以初始化&#39;用户&#39;使用DateTime.UtcNow