Skip to content

Commit 993832a

Browse files
committed
Issue #112.
1 parent 6395b28 commit 993832a

File tree

8 files changed

+37
-21
lines changed

8 files changed

+37
-21
lines changed

nodejs/scripts/jsonix.js

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5482,7 +5482,7 @@ Jsonix.Schema.XSD.Time = Jsonix.Class(Jsonix.Schema.XSD.Calendar, {
54825482
correctedValue = value;
54835483
}
54845484
var correctedTime = correctedValue.getTime();
5485-
if (correctedTime >= 0) {
5485+
if (correctedTime >= (- localTimezone * 60000)) {
54865486
return this.printTime(new Jsonix.XML.Calendar({
54875487
hour : correctedValue.getHours(),
54885488
minute : correctedValue.getMinutes(),
@@ -5492,10 +5492,17 @@ Jsonix.Schema.XSD.Time = Jsonix.Class(Jsonix.Schema.XSD.Calendar, {
54925492
}));
54935493
} else {
54945494
var timezoneHours = Math.ceil(-correctedTime / 3600000);
5495+
5496+
var correctedTimeInSeconds = correctedValue.getSeconds() +
5497+
correctedValue.getMinutes() * 60 +
5498+
correctedValue.getHours() * 3600 +
5499+
timezoneHours * 3600 -
5500+
timezone * 60;
5501+
54955502
return this.printTime(new Jsonix.XML.Calendar({
5496-
hour : (correctedValue.getHours() + timezoneHours - timezone / 60 ) % 24,
5497-
minute : correctedValue.getMinutes(),
5498-
second : correctedValue.getSeconds(),
5503+
hour : correctedTimeInSeconds % 86400,
5504+
minute : correctedTimeInSeconds % 3600,
5505+
second : correctedTimeInSeconds % 60,
54995506
fractionalSecond : (correctedValue.getMilliseconds() / 1000),
55005507
timezone : timezoneHours * 60
55015508
}));

nodejs/scripts/tests/GH73/GH73GDay.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -65,8 +65,8 @@ module.exports = {
6565
"ParseDayGetDate" : function(test) {
6666
var g = Jsonix.Schema.XSD.GDay.INSTANCE;
6767

68-
test.equal(1, g.parse('---01').date.getDate());
69-
test.equal(1, g.parse('---01Z').date.getDate());
68+
test.equal(1, g.parse('---01').date.getUTCDate());
69+
test.equal(1, g.parse('---01Z').date.getUTCDate());
7070

7171
test.done();
7272
}

nodejs/scripts/tests/GH73/GH73GMonth.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -54,8 +54,8 @@ module.exports = {
5454
"ParseMonthGetDate" : function(test) {
5555
var g = Jsonix.Schema.XSD.GMonth.INSTANCE;
5656

57-
test.equal(0, g.parse('--01').date.getMonth());
58-
test.equal(11, g.parse('--12Z').date.getMonth());
57+
test.equal(0, g.parse('--01').date.getUTCMonth());
58+
test.equal(11, g.parse('--12Z').date.getUTCMonth());
5959
test.done();
6060
}
6161
};

nodejs/scripts/tests/GH73/GH73GMonthDay.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -56,8 +56,8 @@ module.exports = {
5656
"ParseMonthDayGetDate" : function(test) {
5757
var g = Jsonix.Schema.XSD.GMonthDay.INSTANCE;
5858

59-
test.equal(0, g.parse('--01-01').date.getMonth());
60-
test.equal(1, g.parse('--01-01').date.getDate());
59+
test.equal(0, g.parse('--01-01').date.getUTCMonth());
60+
test.equal(1, g.parse('--01-01').date.getUTCDate());
6161
test.equal(-300 * 60000, g.parse('--01-01+05:00').date.getTime());
6262
test.done();
6363
}

nodejs/scripts/tests/GH73/GH73GYear.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -75,9 +75,9 @@ module.exports = {
7575
"ParseYearGetDate" : function(test) {
7676
var g = Jsonix.Schema.XSD.GYear.INSTANCE;
7777

78-
test.equal(1967, g.parse('1967').date.getFullYear());
79-
test.equal(1967, g.parse('1967Z').date.getFullYear());
80-
test.equal(-1967, g.parse('-1967Z').date.getFullYear());
78+
test.equal(1967, g.parse('1967').date.getUTCFullYear());
79+
test.equal(1967, g.parse('1967Z').date.getUTCFullYear());
80+
test.equal(-1967, g.parse('-1967Z').date.getUTCFullYear());
8181

8282
test.done();
8383
}

nodejs/scripts/tests/GH73/GH73GYearMonth.js

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -75,10 +75,10 @@ module.exports = {
7575
"ParseYearMonthGetDate" : function(test) {
7676
var g = Jsonix.Schema.XSD.GYearMonth.INSTANCE;
7777

78-
test.equal(1967, g.parse('1967-11').date.getFullYear());
79-
test.equal(10, g.parse('1967-11').date.getMonth());
80-
test.equal(1967, g.parse('1967-11Z').date.getFullYear());
81-
test.equal(10, g.parse('1967-11Z').date.getMonth());
78+
test.equal(1967, g.parse('1967-11').date.getUTCFullYear());
79+
test.equal(10, g.parse('1967-11').date.getUTCMonth());
80+
test.equal(1967, g.parse('1967-11Z').date.getUTCFullYear());
81+
test.equal(10, g.parse('1967-11Z').date.getUTCMonth());
8282
test.equal(0, g.parse('1970-01').date.getTime());
8383
test.equal(0, g.parse('1970-01Z').date.getTime());
8484
test.equal(300, g.parse('1970-01+05:00').timezone);

nodejs/scripts/tests/xsd.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -245,6 +245,7 @@ module.exports =
245245
test.equal(36000500, Jsonix.Schema.XSD.Time.INSTANCE.parse(Jsonix.Schema.XSD.Time.INSTANCE.print(t1)).getTime());
246246
delete t1.originalTimezone;
247247
// test.equal('10:00:00.5Z', Jsonix.Schema.XSD.Time.INSTANCE.print(t1));
248+
console.log(Jsonix.Schema.XSD.Time.INSTANCE.print(t1));
248249
test.equal(36000500, Jsonix.Schema.XSD.Time.INSTANCE.parse(Jsonix.Schema.XSD.Time.INSTANCE.print(t1)).getTime());
249250

250251
var t2 = Jsonix.Schema.XSD.Time.INSTANCE.parse('10:00:00.5+01:00');
@@ -288,6 +289,7 @@ module.exports =
288289
test.equal(39600500, Jsonix.Schema.XSD.Time.INSTANCE.parse(Jsonix.Schema.XSD.Time.INSTANCE.print(t5)).getTime());
289290
delete t5.originalTimezone;
290291
// test.equal('12:00:00.5+01:00', Jsonix.Schema.XSD.Time.INSTANCE.print(t5));
292+
console.log(Jsonix.Schema.XSD.Time.INSTANCE.print(t5));
291293
test.equal(39600500, Jsonix.Schema.XSD.Time.INSTANCE.parse(Jsonix.Schema.XSD.Time.INSTANCE.print(t5)).getTime());
292294
test.done();
293295
},

scripts/src/main/javascript/org/hisrc/jsonix/Jsonix/Schema/XSD/Time.js

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@ Jsonix.Schema.XSD.Time = Jsonix.Class(Jsonix.Schema.XSD.Calendar, {
7272
correctedValue = value;
7373
}
7474
var correctedTime = correctedValue.getTime();
75-
if (correctedTime >= 0) {
75+
if (correctedTime >= (- localTimezone * 60000)) {
7676
return this.printTime(new Jsonix.XML.Calendar({
7777
hour : correctedValue.getHours(),
7878
minute : correctedValue.getMinutes(),
@@ -82,10 +82,17 @@ Jsonix.Schema.XSD.Time = Jsonix.Class(Jsonix.Schema.XSD.Calendar, {
8282
}));
8383
} else {
8484
var timezoneHours = Math.ceil(-correctedTime / 3600000);
85+
86+
var correctedTimeInSeconds = correctedValue.getSeconds() +
87+
correctedValue.getMinutes() * 60 +
88+
correctedValue.getHours() * 3600 +
89+
timezoneHours * 3600 -
90+
timezone * 60;
91+
8592
return this.printTime(new Jsonix.XML.Calendar({
86-
hour : (correctedValue.getHours() + timezoneHours - timezone / 60 ) % 24,
87-
minute : correctedValue.getMinutes(),
88-
second : correctedValue.getSeconds(),
93+
hour : correctedTimeInSeconds % 86400,
94+
minute : correctedTimeInSeconds % 3600,
95+
second : correctedTimeInSeconds % 60,
8996
fractionalSecond : (correctedValue.getMilliseconds() / 1000),
9097
timezone : timezoneHours * 60
9198
}));

0 commit comments

Comments
 (0)