from method
Returns a String
with the different between this and other
. Takes an optional bool
argument to decide whether to use an identifier. withoutPrefixOrSuffix
defaults to false
.
var berlinWallFell = Tempus.parse('19891109');
var dDay = Tempus.parse('19440606');
String difference = berlinWallFell.from(dDay);
assert(difference == '46 years ago');
var berlinWallFell = Tempus.parse('19891109');
var dDay = Tempus.parse('19440606');
String difference = berlinWallFell.from(dDay, false);
assert(difference == '46 years');
Implementation
String from(Tempus other, [bool withoutPrefixOrSuffix = false]) {
Duration diff = _date.difference(other._date);
String timeString = '';
var locale = _getLocale();
if (diff.inSeconds.abs() < 45) {
timeString = locale.seconds.replaceFirst('%i', '${diff.inSeconds.abs()}');
} else if (diff.inMinutes.abs() < 2) {
timeString = locale.aMinute.replaceFirst('%i', '${diff.inMinutes.abs()}');
} else if (diff.inMinutes.abs() < 45) {
timeString = locale.minutes.replaceFirst('%i', '${diff.inMinutes.abs()}');
} else if (diff.inHours.abs() < 2) {
timeString = locale.anHour.replaceFirst('%i', '${diff.inHours.abs()}');
} else if (diff.inHours.abs() < 22) {
timeString = locale.hours.replaceFirst('%i', '${diff.inHours.abs()}');
} else if (diff.inDays.abs() < 2) {
timeString = locale.aDay.replaceFirst('%i', '${diff.inDays.abs()}');
} else if (diff.inDays.abs() < 26) {
timeString = locale.days.replaceFirst('%i', '${diff.inDays.abs()}');
} else if (diff.inDays.abs() < 60) {
timeString =
locale.aMonth.replaceFirst('%i', '${diff.inDays.abs() ~/ 30}');
} else if (diff.inDays.abs() < 320) {
timeString =
locale.months.replaceFirst('%i', '${diff.inDays.abs() ~/ 30}');
} else if (diff.inDays.abs() < 547) {
timeString =
locale.aYear.replaceFirst('%i', '${diff.inDays.abs() ~/ 356}');
} else {
timeString =
locale.years.replaceFirst('%i', '${diff.inDays.abs() ~/ 356}');
}
if (!withoutPrefixOrSuffix) {
if (diff.isNegative) {
timeString = _addIdentifier(
timeString, locale.futurePosition, locale.futureIdentifier);
} else {
timeString = _addIdentifier(
timeString, locale.pastPosition, locale.pastIdentifier);
}
}
return timeString;
}