mirror of
https://github.com/GitJournal/GitJournal.git
synced 2025-06-27 01:02:14 +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';
|
||||
|
||||
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");
|
||||
});
|
||||
});
|
||||
}
|
||||
|
Reference in New Issue
Block a user