Dart로 날짜를 포맷하려면 어떻게합니까?
의 인스턴스가 DateTime
있으며 String 형식으로 지정하고 싶습니다. 어떻게하나요? 날짜를 "2013-04-20"과 같은 문자열로 바꾸고 싶습니다.
intl
패키지 ( installer )를 사용하여 날짜 형식을 지정할 수 있습니다 .
의 경우 en_US
형식은 매우 간단합니다 :
import 'package:intl/intl.dart';
main() {
var now = new DateTime.now();
var formatter = new DateFormat('yyyy-MM-dd');
String formatted = formatter.format(now);
print(formatted); // something like 2013-04-20
}
형식화에 대한 많은 옵션이 있습니다. 문서에서 :
ICU Name Skeleton
-------- --------
DAY d
ABBR_WEEKDAY E
WEEKDAY EEEE
ABBR_STANDALONE_MONTH LLL
STANDALONE_MONTH LLLL
NUM_MONTH M
NUM_MONTH_DAY Md
NUM_MONTH_WEEKDAY_DAY MEd
ABBR_MONTH MMM
ABBR_MONTH_DAY MMMd
ABBR_MONTH_WEEKDAY_DAY MMMEd
MONTH MMMM
MONTH_DAY MMMMd
MONTH_WEEKDAY_DAY MMMMEEEEd
ABBR_QUARTER QQQ
QUARTER QQQQ
YEAR y
YEAR_NUM_MONTH yM
YEAR_NUM_MONTH_DAY yMd
YEAR_NUM_MONTH_WEEKDAY_DAY yMEd
YEAR_ABBR_MONTH yMMM
YEAR_ABBR_MONTH_DAY yMMMd
YEAR_ABBR_MONTH_WEEKDAY_DAY yMMMEd
YEAR_MONTH yMMMM
YEAR_MONTH_DAY yMMMMd
YEAR_MONTH_WEEKDAY_DAY yMMMMEEEEd
YEAR_ABBR_QUARTER yQQQ
YEAR_QUARTER yQQQQ
HOUR24 H
HOUR24_MINUTE Hm
HOUR24_MINUTE_SECOND Hms
HOUR j
HOUR_MINUTE jm
HOUR_MINUTE_SECOND jms
HOUR_MINUTE_GENERIC_TZ jmv
HOUR_MINUTE_TZ jmz
HOUR_GENERIC_TZ jv
HOUR_TZ jz
MINUTE m
MINUTE_SECOND ms
SECOND s
en_US가 아닌 날짜의 경우 로케일에 명시 적으로로드해야합니다. 자세한 내용은 https://www.dartdocs.org/documentation/intl/latest/intl/DateFormat-class.html 을 참조 하십시오 .
이것도 작동합니다.
DateTime today = new DateTime.now();
String dateSlug ="${today.year.toString()}-${today.month.toString().padLeft(2,'0')}-${today.day.toString().padLeft(2,'0')}";
print(dateSlug);
이렇게하면 소셜 네트워크에서와 같은 날짜가 표시됩니다. [ "오늘", "어제", "요일"등.]
void main() {
DateTime now = new DateTime(2018,6,26);
print(date(now));
}
String date(DateTime tm) {
DateTime today = new DateTime.now();
Duration oneDay = new Duration(days: 1);
Duration twoDay = new Duration(days: 2);
Duration oneWeek = new Duration(days: 7);
String month;
switch (tm.month) {
case 1:
month = "january";
break;
case 2:
month = "february";
break;
case 3:
month = "march";
break;
case 4:
month = "april";
break;
case 5:
month = "may";
break;
case 6:
month = "june";
break;
case 7:
month = "july";
break;
case 8:
month = "august";
break;
case 9:
month = "september";
break;
case 10:
month = "october";
break;
case 11:
month = "november";
break;
case 12:
month = "december";
break;
}
Duration difference = today.difference(tm);
if (difference.compareTo(oneDay) < 1) {
return "today";
} else if (difference.compareTo(twoDay) < 1) {
return "yesterday";
} else if (difference.compareTo(oneWeek) < 1) {
switch (tm.weekday) {
case 1:
return "monday";
case 2:
return "tuesday";
case 3:
return "wednesday";
case 4:
return "thurdsday";
case 5:
return "friday";
case 6:
return "saturday";
case 7:
return "sunday";
}
} else if (tm.year == today.year) {
return '${tm.day} $month';
} else {
return '${tm.day} $month ${tm.year}';
}
return "";
}
You can also specify the date format like stated earlier: https://pub.dartlang.org/documentation/intl/latest/intl/DateFormat-class.html
import 'package:intl/intl.dart';
String formatDate(DateTime date) => new DateFormat("MMMM d").format(date);
Produces: March 4
There is a package date_format
dependencies:
date_format: ^1.0.6
code
import 'package:date_format/date_format.dart';
final formattedStr = formatDate(
yourDateTime, [dd, '.', mm, '.', yy, ' ', HH, ':', nn]);
// output example "29.03.19 07:00"
Pay attention: minutes are nn
You can also use this function.
String getFormattedTime(int totalSeconds) {
if (totalSeconds < 0) {
return "00:00:00";
}
int remainingHours = (totalSeconds / 3600).floor();
int remainingMinutes = (totalSeconds / 60).floor() - remainingHours * 60;
int remainingSeconds = totalSeconds - remainingMinutes * 60 - remainingHours * 3600;
return remainingHours.toString().padLeft(2, '0') +
":" +
remainingMinutes.toString().padLeft(2, '0') +
":" +
remainingSeconds.toString().padLeft(2, '0');
}
Input: 3600
(in sec)
Output: 01:00:00
padLeft(2, '0')
Has been used to format the final string(i.e to add a trailing zero).
If someone wants to convert a date in string format first use DateTime.parse("2019-09-10") then pass it to DateTime.format() like
dateFormate = DateFormat("dd-MM-yyyy").format(DateTime.parse("2019-09-30"));
Reference: Dart - How to change format of simple date string which is in yyyy-MM-dd to dd-MM-yyyy
참고URL : https://stackoverflow.com/questions/16126579/how-do-i-format-a-date-with-dart
'Nice programing' 카테고리의 다른 글
파일 또는 어셈블리 'Microsoft.VisualStudio.Web.PageInspector.Loader를로드 할 수 없습니다. (0) | 2020.10.06 |
---|---|
.NET에 문자열 수학 평가 기가 있습니까? (0) | 2020.10.06 |
ReactJS의 동적 속성 (0) | 2020.10.06 |
Swift에서 UIAlertController에 TextField를 추가하는 방법 (0) | 2020.10.06 |
Window.open 및 post 메소드로 매개 변수 전달 (0) | 2020.10.06 |