I have an igGrid where one column is a date. For some reason, the date displayed is always one day behind the date's value.
The column definition is:
{ headerText: "Settlement Date", key: "settlement_date", dataType: "date", format: "MM/dd/yyyy" }
I have the page displaying the JSON source data, which is:
[{"settlement_date"=>"2013-04-17", ...
But yet the igGrid displays "04/16/2013" instead of 4/17.
If I change the dataType to "string", then it displays "2013-04-17". So it appears to be Ignite's conversion to "date" that is screwing it up. (This would be ok, except that I can't format it now.)
Can someone please clue me in on what's going on and how I can fix it?
Hello,
What igGrid tries to do when the date is represented as a string in the data source is to initialize a new Date object using the string and then get its components with the Date API. Date assumes the string is representing an UTC date and therefore you should set enableUTCDates Grid option to true if you need the data source string and the string used by the formatter to be the same.
I hope this helps! Thank you for using Infragistics forums!
Best regards,
Stamen Stoychev
I don't entirely understand how UTC would cause a timeless date string to become yesterday. It's certainly not what one would reasonably expect.
I can't say this is a good answer, but it is an accurate one, I suppose.
JavaScript always creates Date objects in the local timezone but assumes the input string used to create the Date object is UTC. Therefore if you pass "2013-04-17" which is understood as 2013-04-17 00:00.000, in your local timezone UTC -N, the Date will be created as 2013-04-16 (24 - N):00.000 . Then igGrid will take the Date components using Date's API and as Day it'll display 16 instead of 17. By setting enableUTCDates to true you are telling the grid to use the UTC variants of Date's API which first add the timezone difference (and therefore restore the originally intended date-time) before returning the components.
I hope this is a bit less vague than my previous explanation. Please, don't hesitate to ask if you have any additional questions!
I have the same issue, but it doesn't work for me even though I enabled "EnableUTCDates(true). Help appreciated.
My best guess for EnableUTCDates not working as expected in the MVC scenario is that you are not processing the data source through the grid model. When you let the grid model do the remote binding for you, it'll also return the server timezone offset in the response allowing igGrid to modify the dates returned to match the server ones.
It'll be of great help if you could provide a small sample which reproduces the issue.
I am also having the same issue, I have enabled UTCDates in my grid model through the MVC GridModel() method like this :
GridModel GetGridModel(selectedRow) {
GridModel gridModel = new GridModel(); gridModel.ID = "MyGrid"; gridModel.AutoGenerateColumns = false; gridModel.PrimaryKey = selectedRow.PrimaryKey; gridModel.Width = "100%"; gridModel.Height = "400px"; gridModel.EnableUTCDates = true;
.... ....// other settings
..... ......
return gridModel;
}
1) The date I get from server is 7/1/2012 & the grid displays 6/30/2012 (Here the month & day both are decremented)
2) The date I get from server is 11/11/2014 & the grid displays 11/10/2014 (Here only the day is decremented)
Hello Infragisticians,
I have had also experienced with this date issue(EnableUTCDates) and after going with this thread i've applied below settings which could be helpful of all infragisticians,
gridModel.EnableUTCDates = true;
column.For(x => x.columnDate).HeaderText("Date").Format("dd/MM/yyyy").DataType("date");
Code-Behind:
columnDate = new DateTime(dbDate.Value.Year, dbDate.Value.Month, dbDate.Value.Day, dbDate.Value.Hour, dbDateDate.Value.Minute, dbDate.Value.Second, dbDate.Value.Millisecond, DateTimeKind.Utc);
Best Regards,