Flutter에서 DateTime을 포맷하는 방법, Flutter에서 현재 시간을 얻는 방법은 무엇입니까?


115

나는 현재를 표시하려고 DateTime A의 Text버튼을 두드리고 후 위젯을. 다음은 작동하지만 형식을 변경하고 싶습니다.

현재 접근 방식

DateTime now = DateTime.now();
currentTime = new DateTime(now.year, now.month, now.day, now.hour, now.minute);
 Text('$currentTime'), 

결과

YYYY-MM-JJ HH-MM:00.000

질문

부품을 어떻게 제거 할 수 :00.000있습니까?

답변:


245

intl 패키지 DateFormat에서 사용할 수 있습니다 .

import 'package:intl/intl.dart';

DateTime now = DateTime.now();
String formattedDate = DateFormat('yyyy-MM-dd – kk:mm').format(now);

52
파일 에 intl: 0.15.7종속성 을 추가 하는 것을 잊지 마십시오 pubspec.yaml. 최신 버전의 라이브러리는 여기 에서 찾을 수 있습니다 .
Defuera 2018

intl 패키지의 등급이 매우 낮습니다
Aseem

정적 멤버를 얻는 다른 사람은 이니셜 라이저에서 액세스 할 수 없습니까?
MrPool

@MrPool 예, 이니셜 라이저에서 정적 멤버와 동일한 문제에 액세스 할 수 없습니다. 날짜를 정적으로 사용하는 것은 의미가 없기 때문에 매우 실망 스럽습니다.
Michael Tolsma 2010

2
특정 로케일을 사용하려면 다음을 사용할 수 있습니다. 예 : DateFormat.yMd(myLocale.languageCode).format(now)다음과 같이 현재 장치 로케일을 가져 오는 위치 :Locale myLocale = Localizations.localeOf(context)
Zsolt

46

파일에 intl 패키지 를 추가 pubspec.yaml하십시오.

import 'package:intl/intl.dart';

DateFormat dateFormat = DateFormat("yyyy-MM-dd HH:mm:ss");

DateTime 개체를 문자열로 변환

String string = dateFormat.format(DateTime.now());

문자열을 DateTime 객체로 변환

DateTime dateTime = dateFormat.parse("2019-07-19 8:40:23");

21

이 방법을 사용하면 라이브러리를 가져올 필요가 없습니다.

DateTime now = DateTime.now();

String convertedDateTime = "${now.year.toString()}-${now.month.toString().padLeft(2,'0')}-${now.day.toString().padLeft(2,'0')} ${now.hour.toString()}-${now.minute.toString()}";

산출

2020-12-05 14:57


5
누락 된 대시 외에도 다른 종속성을 추가하지 않고 이동하는 가장 좋은 방법입니다.
01000101

1
이것은 좋지만 시간은 24 시간 시계에서 미국 이외의 표준 시간을 반환합니다. 산술 .... 한숨 ... 난 그냥 패키지거야, 그것을 잊지
아미르 Memon

외부 종속성의 문제점은 무엇입니까? 이것이 2020 년에 작동하는 방식입니다 :-)
funder7

13

이 패키지 Jiffy를 사용 해보세요 . 또한 Intl 위에서 실행 되지만 momentjs 구문을 사용하면 더 쉽게 사용할 있습니다. 아래 참조

import 'package:jiffy/jiffy.dart';   

var now = Jiffy().format("yyyy-MM-dd HH:mm:ss");

다음을 수행 할 수도 있습니다.

var a = Jiffy().yMMMMd; // October 18, 2019

또한 DateTime 객체, 문자열 및 배열을 전달할 수도 있습니다.

var a = Jiffy(DateTime(2019, 10, 18)).yMMMMd; // October 18, 2019

var a = Jiffy("2019-10-18").yMMMMd; // October 18, 2019

var a = Jiffy([2019, 10, 18]).yMMMMd; // October 18, 2019

6

0.16 이후 약간의 변화가 있습니다. 그래서 여기에서 어떻게했는지,

pubspec.yaml에서 가져 오기

dependencies:
      flutter:
        sdk: flutter
      intl: ^0.16.1

그런 다음 사용

  txdate= DateTime.now()


  DateFormat.yMMMd().format(txdate)

6

여기 내 간단한 해결책이 있습니다. 종속성이 필요하지 않습니다.

그러나 날짜는 문자열 형식입니다. 시간을 원한다면 하위 문자열 값을 변경하십시오.

print(new DateTime.now()
            .toString()
            .substring(0,10)
     );   // 2020-06-10

이것은 어떤 패키지에서도 잘 작동합니다. 아래는 그것을하는 방법입니다. DateTime now = DateTime.now (); DateTime date = new DateTime (now.year, now.month, now.day); print (date.toString (). substring (0, 10));
Raju Gupta

4

이 기능 사용

todayDate() {
    var now = new DateTime.now();
    var formatter = new DateFormat('dd-MM-yyyy');
    String formattedTime = DateFormat('kk:mm:a').format(now);
    String formattedDate = formatter.format(now);
    print(formattedTime);
    print(formattedDate);
  }

산출:

08:41:AM
21-12-2019

2

이 구문을 사용할 수도 있습니다. YYYY-MM-JJ HH-MM의 경우 :

var now = DateTime.now();
var month = now.month.toString().padLeft(2, '0');
var day = now.day.toString().padLeft(2, '0');
var text = '${now.year}-$month-$day ${now.hour}:${now.minute}';

실제 "yyyy-MM-dd"
01000101에

1

문자열 분할 방법을 사용하여 : 00.000 제거

var formatedTime = currentTime.toString().split(':')
Text(formatedTime[0])

======= 또는 라이브러리를 사용하지 않고 YYYY-MM-DD HH : MM : SS 형식의 경우 아래 코드 사용 ====

var stringList =  DateTime.now().toIso8601String().split(new RegExp(r"[T\.]"));
var formatedDate = "${stringList[0]} ${stringList[1]}";
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.