mirror of
https://github.com/GitJournal/GitJournal.git
synced 2025-06-28 01:45:55 +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 #42
This commit is contained in:
@ -1,21 +1,22 @@
|
|||||||
|
import 'dart:core';
|
||||||
import 'package:intl/intl.dart';
|
import 'package:intl/intl.dart';
|
||||||
|
|
||||||
String toIso8601(DateTime dt) {
|
String toIso8601(DateTime dt) {
|
||||||
return DateFormat("yyyy-MM-ddTHH:mm:ss").format(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 result = DateFormat("yyyy-MM-ddTHH:mm:ss").format(dt);
|
||||||
|
|
||||||
var offset = dt.timeZoneOffset;
|
offset = offset ?? dt.timeZoneOffset;
|
||||||
int minutes = (offset.inMinutes % 60);
|
int minutes = (offset.inMinutes % 60);
|
||||||
int hours = offset.inHours.toInt();
|
int hours = offset.inHours.toInt();
|
||||||
|
|
||||||
String minutesStr;
|
String sign = '+';
|
||||||
if (minutes < 10) {
|
if (hours < 0) {
|
||||||
minutesStr = '0' + minutes.toString();
|
hours = hours < 0 ? hours * -1 : hours;
|
||||||
} else {
|
minutes = minutes < 0 ? minutes * -1 : minutes;
|
||||||
minutesStr = minutes.toString();
|
sign = '-';
|
||||||
}
|
}
|
||||||
|
|
||||||
String hourStr;
|
String hourStr;
|
||||||
@ -25,5 +26,12 @@ String toIso8601WithTimezone(DateTime dt) {
|
|||||||
hourStr = hours.toString();
|
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");
|
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");
|
||||||
|
});
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user