我創建了一個函式,該函式接收一個字串日期,并回傳一個字串,顯示給定日期和當前DateTime之間的時間,格式為:x天以前、x個月以前、剛剛、x年以前、昨天,等等:
該函式的代碼如下:
該函式接收一個字串日期,并回傳一個字串,顯示給定日期和當前DateTime之間的時間。
這是該函式的代碼:
這是該函式的代碼。
String tiempoDesdeFecha(String dateString, {bool numericDates = true}) {
DateTime date = DateTime.parse(dateString)。
final date2 = DateTime.now()。
final difference = date2.difference(date)。
if ((difference.inDays / 365).floor() >= 2) {
return "hace".tr() '${(difference. inDays / 365).floor()}' "earsago".tr()。
} else if ((difference.inDays / 365) .floor() >= 1 ) {
return ( numericDates) ? '1yearago'.tr() : 'lastyear'.tr() " " ( numericDates).toString()。
} else if ((difference.inDays / 30).floor() >= 2) {
return "hace".tr() '${(difference. inDays / 365).floor()}' "monthago".tr()。
} else if ((difference.inDays / 30).floor() >= 1) {
return ( numericDates) ? '1monthago'.tr() : 'lastmonth'.tr()。
} else if ((difference.inDays / 7).floor() >= 2) {
return "hace".tr() '${(difference. inDays / 7).floor()}' ' weeksago'.tr()。
} else if ((difference.inDays / 7).floor() >= 1) {
return ( numericDates) ? "1weekago".tr() : 'lastweek'.tr() 。
} else if (difference.inDays >= 2) {
return "hace".tr() '${difference.inDays}' 'dayago'.tr()。
} else if (difference.inDays >= 1) {
return ( numericDates) ? '1dayago'.tr() : 'yesterday'.tr() 。
} else if (difference.inHours >= 2) {
return "hace".tr() '${difference.inHours}' 'hoursago'.tr()。
} else if (difference.inHours >= 1) {
return ( numericDates) ? '1hourago'.tr() : 'anhourago'.tr() 。
} else if (difference.inMinutes >= 2) {
return "hace".tr() '${difference.inMinutes}' 'minago'.tr()。
} else if (difference.inMinutes >= 1) {
return ( numericDates) ? '1minuteago'.tr() : 'aminuteago'.tr()。
} else if (difference.inSeconds >=3) {
return "hace".tr() '${difference.inSeconds}' ' secondsago'.tr()。
} else {
return 'justnow'.tr()。
}
}
我包括了在我使用的四個Locale中的一個顯示回傳字串的代碼。
一切正常,但條件是:
一切正常。
else if ((difference.inDays / 30) .floor() >= 2) {
return "hace".tr() '${(difference. inDays / 365).floor()}' "monthago".tr()。
這總是回傳0個月前。
我正在呼叫這個函式:
fecha_recibida = DateFormat('yyyy-MM-dd HH:mm',"en").format(date);
fecha_recibida = tiempoDesdeFecha(fecha_recibida)。
我正在用下面的字串日期測驗這個問題。 "2021-5-5 19:34"
我做錯了什么?
uj5u.com熱心網友回復:
我相信錯誤是在回傳的字串中,
difference.inDays / 365必須是difference.inDays / 30。
所以條件應該是這樣的:
else if ((difference.inDays / 30) .floor() >= 2) {
return "hace".tr() '${(difference. inDays / 30).floor()}' "monthago".tr()。
另外,正如@aman提到的,你可以使用timeago包
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/309254.html
標籤:
