Datetime string on the client side is generated like moment().format()
=> 2016-09-09T01:29:25+05:30
On HTTP Post to the server, while debugging I can still see the correct offset. However, after saveChanges()
is called, in database the value is stored as utc
with +00:00
as offset (For eg: 2016-09-08 00:30:00.0000000 +00:00
).
How do I keep the offset value intact?
Code:
EF table Entity model:
public partial class SomeTable
{
public long Id { get; set; }
public Nullable<System.DateTimeOffset> StartTime { get; set; }
public Nullable<System.DateTimeOffset> EndTime { get; set; }
}
Post Model:
public class DateInfoModel
{
public long Id { get; set; }
public DateTimeOffset StartTime { get; set; }
public DateTimeOffset EndTime { get; set; }
}
Action Method:
[HttpPost]
[Route("UpdateInfo")]
public IHttpActionResult UpdateInfo(DateInfoModel model) {
Int64 user_id = User.Identity.GetUserId<Int64>();
if (!ModelState.IsValid)
{
return BadRequest(ModelState);
}
SomeTable new_rec = new SomeTable();
new_rec.StartTime = model.StartTime;
new_rec.EndTime = model.EndTime;
db.SomeTable.Add(new_rec);
db.SaveChanges();
return Ok();
}
Client Side:
updateDateInfo = (): ng.IPromise<any> => {
var to_send;
to_send.StartTime = moment().format();
to_send.EndTime = moment().format();
return this.$http.post(webApiBaseUrl + "api/UpdateDateInfo",
to_send)
.then((response) => {
if (response.status == 200) {
return response;
}
else {
return this.$q.reject(response);
}
}, (response) => {
return this.$q.reject(response);
})
}
NOTE: SQL column type is also set to datetimeoffset(7)