timestampToRfc3339 static method
Implementation
static String timestampToRfc3339(int seconds, int nanos) {
if (nanos < 0 || nanos > 999999999) {
throw ArgumentException.invalidOperationArguments(
"timestampToRfc3339",
reason: 'nanos must be between 0 and 999999999',
);
}
final dt = DateTime.fromMillisecondsSinceEpoch(seconds * 1000, isUtc: true);
String two(int n) => n.toString().padLeft(2, '0');
String four(int n) => n.toString().padLeft(4, '0');
final buffer =
StringBuffer()
..write(four(dt.year))
..write('-')
..write(two(dt.month))
..write('-')
..write(two(dt.day))
..write('T')
..write(two(dt.hour))
..write(':')
..write(two(dt.minute))
..write(':')
..write(two(dt.second));
if (nanos != 0) {
var frac = nanos.toString().padLeft(9, '0');
// RFC3339 / protobuf JSON:
// remove trailing zeros
frac = frac.replaceFirst(RegExp(r'0+$'), '');
buffer
..write('.')
..write(frac);
}
buffer.write('Z');
return buffer.toString();
}