Saya mencoba menampilkan arus DateTime
dalam Text
widget setelah mengetuk tombol. Berikut ini berfungsi, tetapi saya ingin mengubah formatnya.
Pendekatan saat ini
DateTime now = DateTime.now();
currentTime = new DateTime(now.year, now.month, now.day, now.hour, now.minute);
Text('$currentTime'),
Hasil
YYYY-MM-JJ HH-MM:00.000
Pertanyaan
Bagaimana cara menghapus :00.000
bagian tersebut?
intl: 0.15.7
ketergantungan kepubspec.yaml
file Anda . Versi terbaru perpustakaan dapat ditemukan di sini .DateFormat.yMd(myLocale.languageCode).format(now)
mana Anda mendapatkan perangkat lokal saat ini seperti ini:Locale myLocale = Localizations.localeOf(context)
Tambahkan
intl
paket kepubspec.yaml
file Anda .import 'package:intl/intl.dart'; DateFormat dateFormat = DateFormat("yyyy-MM-dd HH:mm:ss");
Mengonversi objek DateTime menjadi String
String string = dateFormat.format(DateTime.now());
Mengonversi String menjadi objek DateTime
DateTime dateTime = dateFormat.parse("2019-07-19 8:40:23");
sumber
Dengan pendekatan ini, tidak perlu mengimpor perpustakaan apa pun.
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()}";
Keluaran
sumber
Cobalah paket ini, Jiffy , ini juga berjalan di atas Intl , tetapi membuatnya lebih mudah menggunakan sintaks momentjs . Lihat di bawah
import 'package:jiffy/jiffy.dart'; var now = Jiffy().format("yyyy-MM-dd HH:mm:ss");
Anda juga dapat melakukan hal berikut
var a = Jiffy().yMMMMd; // October 18, 2019
Dan Anda juga bisa meneruskan objek DateTime Anda, string dan array
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
sumber
ada beberapa perubahan sejak 0,16 jadi di sini bagaimana saya melakukannya,
impor di pubspec.yaml
dependencies: flutter: sdk: flutter intl: ^0.16.1
lalu gunakan
txdate= DateTime.now() DateFormat.yMMMd().format(txdate)
sumber
Inilah solusi sederhana saya. Itu tidak membutuhkan ketergantungan apa pun.
Namun, tanggalnya akan dalam format string. Jika Anda menginginkan waktu, ubah nilai substring
print(new DateTime.now() .toString() .substring(0,10) ); // 2020-06-10
sumber
Gunakan fungsi ini
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); }
Keluaran:
08:41:AM 21-12-2019
sumber
Anda juga dapat menggunakan sintaks ini. Untuk 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}';
sumber
Gunakan metode String split untuk menghapus: 00.000
var formatedTime = currentTime.toString().split(':') Text(formatedTime[0])
======= ATAU GUNAKAN kode DI BAWAH untuk YYYY-MM-DD HH: MM: format SS tanpa menggunakan library ====
var stringList = DateTime.now().toIso8601String().split(new RegExp(r"[T\.]")); var formatedDate = "${stringList[0]} ${stringList[1]}";
sumber