【Flutter】DateTime을 「며칠 전」 「몇 분 전」등 현재 시각과의 차분으로 표시시키는 방법
현재 시각보다 「~일 전」 「~분 전」의 시간을 들여와 화면에 표시한다
소스 코드
main.dart
// 現在の時刻
final DateTime now = DateTime.now();
class Date extends StatelessWidget {
// 30秒前の時刻
final DateTime thirtySecondsAgo = now.add(Duration(seconds: 30) * -1);
// 30分前の時刻
final DateTime thirtyMinutesAgo = now.add(Duration(minutes: 30) * -1);
// 5時間前の時刻
final DateTime fiveHoursAgo = now.add(Duration(hours: 30) * -1);
// 30日前の時刻
final DateTime thirtyDaysAgo = now.add(Duration(days: 30) * -1);
@override
Widget build(BuildContext context) {
return Scaffold(
body: Center(
child: Column(mainAxisAlignment: MainAxisAlignment.center, children: <
Widget[
// ⓵
Text(DateFormat('yyyy/MM/dd(E) HH:mm:ss').format(now)),
// ②
Text(DateFormat('yyyy/MM/dd(E) HH:mm:ss').format(thirtySecondsAgo)),
// ③
Text(DateFormat('yyyy/MM/dd(E) HH:mm:ss').format(thirtyMinutesAgo)),
// ④
Text(DateFormat('yyyy/MM/dd(E) HH:mm:ss').format(fiveHoursAgo)),
// ⑤
Text(DateFormat('yyyy/MM/dd(E) HH:mm:ss').format(thirtyDaysAgo)),
]),
),
);
}
}
실제 화면이 여기
일단 여기까지 사용한 기술 소개
DateTime.add()
Flutter의 DateTime 클래스 에는, add 라고 하는 메소드가 준비되어 있어 이것을 이용해 지정한 기간, 전 또는 후의 시각 (DateTime)을 취해 이것이다.
예를 들어, 30초 후에라면 다음과 같이 하면 가져올 수 있습니다.
final thirtySecondsAfter = DateTime.add(Duration(seconds: 30))
add의 인수에 Duration 를 건네주면 간단하게 에 이것입니다.
Flutter의 공식 문서 "DateTime class"
htps : // 아피. fぅ r. 그리고 v/fぅ는 r/다 rt-이것/다테치메-cぁs. HTML
DateTime을 포맷으로 String으로 변환
우선은, 부 b. 에서 v 로부터 intl 라고 하는 라이브러리를 사용할 수 있도록(듯이) 합니다.
pubspec.yamldependencies:
flutter:
sdk: flutter
intl: ^0.16.1
main.dartimport 'package:flutter/material.dart';
import 'package:intl/intl.dart';
이제 intl을 사용할 수 있습니다.
그런 다음 형식을 지정하여 String으로 변환합니다.
예: DateFormat('yyyy/MM/dd(E)').format(DateTime date)
· 이와 같이 DataFormat의 인수로 지정하는 Format를 건네줍니다.
⬇️
・format의 인수에 String로 변환하고 싶은 시각(DateTime)을 건네준다
⬇️
· 이것을 Text의 인수에 건네주면 표시할 수 있다
참고한 기사
· pub.dev의 intl 패키지
htps // 푸 b. v / pac 가게 s / in tl
·flutter로 DateTime과 String의 변환 방법과 TimeZone과 Locale
htps : // 코 m / 코 2 c / ms / bd0d20d72c66 8231c5c
현재 시간과의 차이를 표시합니다.
소스 코드
main.dartfinal DateTime now = DateTime.now();
class Date extends StatelessWidget {
final List<DateTime> dates = [
// 30秒前の時刻
now.add(Duration(seconds: 30) * -1),
// 30分前の時刻
now.add(Duration(minutes: 30) * -1),
// 5時間前
now.add(Duration(hours: 30) * -1),
// 30日前
now.add(Duration(days: 30) * -1)
];
@override
Widget build(BuildContext context) {
final difference = dates.map((date) => Text(fromAtNow(date))).toList();
return Scaffold(
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center, children: difference),
),
);
}
}
String fromAtNow(DateTime date) {
final Duration difference = DateTime.now().difference(date);
final int sec = difference.inSeconds;
if (sec >= 60 * 60 * 24) {
return '${difference.inDays.toString()}日前';
} else if (sec >= 60 * 60) {
return '${difference.inHours.toString()}時間前';
} else if (sec >= 60) {
return '${difference.inMinutes.toString()}分前';
} else {
return '$sec秒前';
}
}
실제 화면
이 방법을 설명
실제로 여기 부분에서 현재 시간과의 차이를 문자열로 변환합니다.
String fromAtNow(DateTime date) {
final Duration difference = DateTime.now().difference(date);
final int sec = difference.inSeconds;
if (sec >= 60 * 60 * 24) {
return '${difference.inDays.toString()}日前';
} else if (sec >= 60 * 60) {
return '${difference.inHours.toString()}時間前';
} else if (sec >= 60) {
return '${difference.inMinutes.toString()}分前';
} else {
return '$sec秒前';
}
}
절차
1. 우선, DateTime 클래스의 difference 메소드를 사용해 차분을 Duration으로 돌려줍니다.
이 예에서는 DataTime.now와 date의 차이를 취했습니다.
예 : final Duration difference = DateTime.now().difference(date);
2. Duration의 inSeconds 메소드로 차분(Duration)을 초수(int)로 변환해 준다
예 : final int sec = difference.inSeconds;
3. 60초 이하의 경우는 ~초 전과 같이 경우 나누기
예 : if(sec < 60) {return '$sec秒前';}
이상! !
유용한 기사
Flutter 공식 문서 "DateTime class"
htps : // 아피. fぅ r. 그리고 v/fぅ는 r/다 rt-이것/다테치메-cぁs. HTML
· pub.dev의 intl 패키지
htps // 푸 b. v / pac 가게 s / in tl
·flutter로 DateTime과 String의 변환 방법과 TimeZone과 Locale
htps : // 코 m / 코 2 c / ms / bd0d20d72c66 8231c5c
· 일주일 전, 또는 현재 일시부터 n일 후, n일 전의 날짜를 취득한다 - C# 프로그래밍
htps //w w.ぺん c. 코 m / 도쿠 멘 t / c 샤 rp 게 t 어우 ㅇ k 턱 갓
Reference
이 문제에 관하여(【Flutter】DateTime을 「며칠 전」 「몇 분 전」등 현재 시각과의 차분으로 표시시키는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/seiboy/items/7b632103088c5ed65082
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
// 現在の時刻
final DateTime now = DateTime.now();
class Date extends StatelessWidget {
// 30秒前の時刻
final DateTime thirtySecondsAgo = now.add(Duration(seconds: 30) * -1);
// 30分前の時刻
final DateTime thirtyMinutesAgo = now.add(Duration(minutes: 30) * -1);
// 5時間前の時刻
final DateTime fiveHoursAgo = now.add(Duration(hours: 30) * -1);
// 30日前の時刻
final DateTime thirtyDaysAgo = now.add(Duration(days: 30) * -1);
@override
Widget build(BuildContext context) {
return Scaffold(
body: Center(
child: Column(mainAxisAlignment: MainAxisAlignment.center, children: <
Widget[
// ⓵
Text(DateFormat('yyyy/MM/dd(E) HH:mm:ss').format(now)),
// ②
Text(DateFormat('yyyy/MM/dd(E) HH:mm:ss').format(thirtySecondsAgo)),
// ③
Text(DateFormat('yyyy/MM/dd(E) HH:mm:ss').format(thirtyMinutesAgo)),
// ④
Text(DateFormat('yyyy/MM/dd(E) HH:mm:ss').format(fiveHoursAgo)),
// ⑤
Text(DateFormat('yyyy/MM/dd(E) HH:mm:ss').format(thirtyDaysAgo)),
]),
),
);
}
}
dependencies:
flutter:
sdk: flutter
intl: ^0.16.1
import 'package:flutter/material.dart';
import 'package:intl/intl.dart';
소스 코드
main.dart
final DateTime now = DateTime.now();
class Date extends StatelessWidget {
final List<DateTime> dates = [
// 30秒前の時刻
now.add(Duration(seconds: 30) * -1),
// 30分前の時刻
now.add(Duration(minutes: 30) * -1),
// 5時間前
now.add(Duration(hours: 30) * -1),
// 30日前
now.add(Duration(days: 30) * -1)
];
@override
Widget build(BuildContext context) {
final difference = dates.map((date) => Text(fromAtNow(date))).toList();
return Scaffold(
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center, children: difference),
),
);
}
}
String fromAtNow(DateTime date) {
final Duration difference = DateTime.now().difference(date);
final int sec = difference.inSeconds;
if (sec >= 60 * 60 * 24) {
return '${difference.inDays.toString()}日前';
} else if (sec >= 60 * 60) {
return '${difference.inHours.toString()}時間前';
} else if (sec >= 60) {
return '${difference.inMinutes.toString()}分前';
} else {
return '$sec秒前';
}
}
실제 화면
이 방법을 설명
실제로 여기 부분에서 현재 시간과의 차이를 문자열로 변환합니다.
String fromAtNow(DateTime date) {
final Duration difference = DateTime.now().difference(date);
final int sec = difference.inSeconds;
if (sec >= 60 * 60 * 24) {
return '${difference.inDays.toString()}日前';
} else if (sec >= 60 * 60) {
return '${difference.inHours.toString()}時間前';
} else if (sec >= 60) {
return '${difference.inMinutes.toString()}分前';
} else {
return '$sec秒前';
}
}
절차
1. 우선, DateTime 클래스의 difference 메소드를 사용해 차분을 Duration으로 돌려줍니다.
이 예에서는 DataTime.now와 date의 차이를 취했습니다.
예 :
final Duration difference = DateTime.now().difference(date);
2. Duration의 inSeconds 메소드로 차분(Duration)을 초수(int)로 변환해 준다
예 :
final int sec = difference.inSeconds;
3. 60초 이하의 경우는 ~초 전과 같이 경우 나누기
예 :
if(sec < 60) {return '$sec秒前';}
이상! !
유용한 기사
Flutter 공식 문서 "DateTime class"
htps : // 아피. fぅ r. 그리고 v/fぅ는 r/다 rt-이것/다테치메-cぁs. HTML
· pub.dev의 intl 패키지
htps // 푸 b. v / pac 가게 s / in tl
·flutter로 DateTime과 String의 변환 방법과 TimeZone과 Locale
htps : // 코 m / 코 2 c / ms / bd0d20d72c66 8231c5c
· 일주일 전, 또는 현재 일시부터 n일 후, n일 전의 날짜를 취득한다 - C# 프로그래밍
htps //w w.ぺん c. 코 m / 도쿠 멘 t / c 샤 rp 게 t 어우 ㅇ k 턱 갓
Reference
이 문제에 관하여(【Flutter】DateTime을 「며칠 전」 「몇 분 전」등 현재 시각과의 차분으로 표시시키는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/seiboy/items/7b632103088c5ed65082텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)