这是我的班级
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小时有关。
我没有得到我保存的同一时间。我该如何解决这个问题?
答案 0 :(得分:1)
数据库中的时间戳始终为UTC。我建议使用UTC时间,并且只在准备在某处显示它们时进行本地化。
您可以初始化&#39;用户&#39;使用DateTime.UtcNow