1
0
mirror of https://github.com/GitJournal/GitJournal.git synced 2025-07-11 04:54:20 +08:00

Fix dateTime to string with timezone

We should just use the 'timezone' dart package and not handle this
ourselves as we're probably fucking it up in other places.

This fixes 
This commit is contained in:
Vishesh Handa
2019-12-09 01:56:46 +01:00
parent a33fb88fb0
commit ad6d47ef0f
2 changed files with 45 additions and 8 deletions

@ -1,21 +1,22 @@
import 'dart:core';
import 'package:intl/intl.dart';
String toIso8601(DateTime dt) {
return DateFormat("yyyy-MM-ddTHH:mm:ss").format(dt);
}
String toIso8601WithTimezone(DateTime dt) {
String toIso8601WithTimezone(DateTime dt, [Duration offset]) {
var result = DateFormat("yyyy-MM-ddTHH:mm:ss").format(dt);
var offset = dt.timeZoneOffset;
offset = offset ?? dt.timeZoneOffset;
int minutes = (offset.inMinutes % 60);
int hours = offset.inHours.toInt();
String minutesStr;
if (minutes < 10) {
minutesStr = '0' + minutes.toString();
} else {
minutesStr = minutes.toString();
String sign = '+';
if (hours < 0) {
hours = hours < 0 ? hours * -1 : hours;
minutes = minutes < 0 ? minutes * -1 : minutes;
sign = '-';
}
String hourStr;
@ -25,5 +26,12 @@ String toIso8601WithTimezone(DateTime dt) {
hourStr = hours.toString();
}
return result + '+' + hourStr + ':' + minutesStr;
String minutesStr;
if (minutes < 10) {
minutesStr = '0' + minutes.toString();
} else {
minutesStr = minutes.toString();
}
return result + sign + hourStr + ':' + minutesStr;
}

@ -16,5 +16,34 @@ void main() {
expect(str, "2011-06-06T05:05:03+00:00");
});
test('Test with positive offset', () {
var dateTime = DateTime.utc(2011, 6, 6, 5, 5, 3);
var str = toIso8601WithTimezone(dateTime, Duration(hours: 2));
expect(str, "2011-06-06T05:05:03+02:00");
});
test('Test with positive offset and minutes', () {
var dateTime = DateTime.utc(2011, 6, 6, 5, 5, 3);
var str = toIso8601WithTimezone(dateTime, Duration(hours: 10));
expect(str, "2011-06-06T05:05:03+10:00");
});
test('Test with negative offset', () {
var dateTime = DateTime.utc(2011, 6, 6, 5, 5, 3);
var str = toIso8601WithTimezone(dateTime, Duration(hours: -5));
expect(str, "2011-06-06T05:05:03-05:00");
});
test('Test with negative offset and minutes', () {
var dateTime = DateTime.utc(2011, 6, 6, 5, 5, 3);
var str =
toIso8601WithTimezone(dateTime, Duration(hours: -11, minutes: -30));
expect(str, "2011-06-06T05:05:03-11:30");
});
});
}