在MongoDB中插入错误的日期

时间:2018-04-12 09:19:55

标签: javascript c# mongodb

我想使用C#在我的MongoDB表中保存日期。

这是一个使用Ajax将数据发送到C#controller

的JavaScript逻辑
mocha --timeout 10000

这是将数据保存在MongoDB中的C#逻辑:

$(function ($, w, d) {
    var _user = {}
    //var time =    moment("2016-04-02", "YYYYMMDD").fromNow()
    //var bime =    moment().endOf('day').fromNow();
    //var crime =   moment("20120620", "YYYYMMDD").fromNow();
    //              document.getElementById('time').innerHTML = time;
    var obj = {};
    var holidaylist = ["Mar-31-2018", "Apr-01-2018","Apr-04-2018","Apr-07-2018","Apr-08-2018"];
    var  startdate = new Date("Apr-02-2018");

    obj.endDate = "Apr-06-2018";
    obj.holidaylist = holidaylist;
    obj.NumberOfCount = 9;
    CallAjax("POST", '/LeaveManagement/', 'checkleavelogic', obj, onsuccessaddemployee, '');

现在这是保存为上一个日期的MongoDB表。

Mongodb DataBase Record

在这里,您可以看到我的public JsonResult checkLeaveLogic(LeaveLogicModel leaveLogic) { string strconnectiomstring = "mongodb://10.10.32.125:27017"; MongoClient Client = new MongoClient(strconnectiomstring); var DB = Client.GetDatabase("TimeClock"); List<DateTime> leavesDate = new List<DateTime>(); var collection = DB.GetCollection<LeaveLogicModel>("leaves1"); collection.InsertOne(leaveLogic); } 4月02-2018 ,但它保存为 Apr-01-2018 ,并且所有日期都是相同。

有人可以告诉我哪里错了吗?

2 个答案:

答案 0 :(得分:0)

当您使用日期或日期和时间创建新日期时,通常会在与程序相同的时区中创建它们。

因此,如果您不指定时区,它将成为服务器所在的时区。当您保存到Mongo时,日期序列化为UTC - &gt;零时区。

使用+00:00时区创建日期,您应该拥有一致的数据。

答案 1 :(得分:0)

将日期时间设置为UTC是个不错的做法,但是如果要转换它,可以使用类似的东西。

       var date = DateTime.UtcNow;
       TimeZoneInfo.ConvertTime(date, TimeZoneInfo.Local);