Skip to content
This repository was archived by the owner on Oct 14, 2024. It is now read-only.

Commit 01065ba

Browse files
Resolve #179 (#180)
fix calendar shifting date
1 parent 1461751 commit 01065ba

File tree

5 files changed

+28
-37
lines changed

5 files changed

+28
-37
lines changed

AjaxControlToolkit.Jasmine/Suites/CalendarTests.aspx

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -446,6 +446,19 @@
446446
expect(this.selectedDateExtender._selectedDate.localeFormat(this.selectedDateExtender._format)).toBe(this.selectedDateExtender._textbox.get_Value());
447447
});
448448
});
449+
450+
describe("Parsing", function () {
451+
beforeEach(function () {
452+
this.extender = $find(CALENDAR_EXTENDER_CLIENT_ID);
453+
});
454+
455+
it("parses date correctly", function () {
456+
var date = this.extender._parseDateSortableFormat("2016-07-25T13:08:55");
457+
var expectedDate = new Date(2016, 6, 25, 13, 8, 55);
458+
459+
expect(date.getTime()).toBe(expectedDate.getTime());
460+
});
461+
});
449462
});
450463
</script>
451464

AjaxControlToolkit/Scripts/Calendar.js

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -324,7 +324,7 @@ Sys.Extended.UI.CalendarBehavior.prototype = {
324324
},
325325
set_selectedDate: function(value) {
326326
if(value && (String.isInstanceOfType(value)) && (value.length != 0)) {
327-
value = Date.fromISO(value);
327+
value = this._parseDateSortableFormat(value);
328328
}
329329

330330
if(this._selectedDate != value) {
@@ -1753,6 +1753,17 @@ Sys.Extended.UI.CalendarBehavior.prototype = {
17531753
}
17541754
// make sure we clean up the flag due to issues with alert/alt-tab/etc
17551755
this._popupMouseDown = false;
1756+
},
1757+
_parseDateSortableFormat: function (dateString) {
1758+
var dateParts = /(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2})\.?(\d{0,7})?/.exec(dateString);
1759+
1760+
return new Date(
1761+
dateParts[1],
1762+
dateParts[2] - 1,
1763+
dateParts[3],
1764+
dateParts[4],
1765+
dateParts[5],
1766+
dateParts[6]);
17561767
}
17571768
}
17581769
Sys.Extended.UI.CalendarBehavior.registerClass("Sys.Extended.UI.CalendarBehavior", Sys.Extended.UI.BehaviorBase);

AjaxControlToolkit/Scripts/Calendar.min.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

AjaxControlToolkit/Scripts/Common.DateTime.js

Lines changed: 1 addition & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -299,37 +299,4 @@ Sys.Extended.UI.FirstDayOfWeek.prototype = {
299299
Saturday : 6,
300300
Default : 7
301301
}
302-
Sys.Extended.UI.FirstDayOfWeek.registerEnum("Sys.Extended.UI.FirstDayOfWeek");
303-
304-
(function(){
305-
var D= new Date('2011-06-02T09:34:29+02:00');
306-
if(!D || +D!== 1307000069000){
307-
Date.fromISO= function(s){
308-
var day, tz,
309-
rx=/^(\d{4}\-\d\d\-\d\d([tT ][\d:\.]*)?)([zZ]|([+\-])(\d\d):(\d\d))?$/,
310-
p= rx.exec(s) || [];
311-
if(p[1]){
312-
day= p[1].split(/\D/);
313-
for(var i= 0, L= day.length; i<L; i++){
314-
day[i]= parseInt(day[i], 10) || 0;
315-
};
316-
day[1]-= 1;
317-
day= new Date(Date.UTC.apply(Date, day));
318-
if(!day.getDate()) return NaN;
319-
if(p[5]){
320-
tz= (parseInt(p[5], 10)*60);
321-
if(p[6]) tz+= parseInt(p[6], 10);
322-
if(p[4]== '+') tz*= -1;
323-
if(tz) day.setUTCMinutes(day.getUTCMinutes()+ tz);
324-
}
325-
return day;
326-
}
327-
return NaN;
328-
}
329-
}
330-
else{
331-
Date.fromISO= function(s){
332-
return new Date(s);
333-
}
334-
}
335-
})()
302+
Sys.Extended.UI.FirstDayOfWeek.registerEnum("Sys.Extended.UI.FirstDayOfWeek");

AjaxControlToolkit/Scripts/Common.DateTime.min.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)