फ़्लटर में DateTime का प्रारूप कैसे करें, स्पंदन में वर्तमान समय कैसे प्राप्त करें?


113

मैं एक बटन पर टैप करने के बाद विजेट DateTimeमें करंट प्रदर्शित करने की कोशिश कर रहा हूं 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हिस्सा कैसे निकाल सकता हूं ?

जवाबों:


243

आप 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फ़ाइल पर निर्भरता जोड़ना न भूलें । लाइब्रेरी का नवीनतम संस्करण यहां पाया जा सकता है
डेफ्यूरा

intl package की बहुत कम रेटिंग है
Aseem

किसी और को मिल रहा है जो स्थैतिक सदस्यों को शुरुआती में पहुँचा नहीं जा सकता है?
12

@MrPool हाँ, स्थैतिक सदस्यों के साथ एक ही मुद्दे को आरंभीकरण में एक्सेस नहीं किया जा सकता है। बहुत निराशा होती है क्योंकि तारीख स्थिर होने से कोई मतलब नहीं है।
माइकल टॉल्स्मा

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 = 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 घंटे की घड़ी पर गैर-अमेरिकी मानक समय लौटा रहा है। अंकगणित .... आह ... इसे भूल जाओ, मैं सिर्फ पैकेज प्राप्त करूँगा
अमीर मेमन

बाहरी निर्भरता के साथ समस्या क्या है? इस तरह से चीजें 2020 :-) में काम करती हैं
funder7

13

इस पैकेज को आज़माएं, जिफ़ी , यह भी Intl के शीर्ष पर चलता है , लेकिन यह गतिज वाक्यविन्यास का उपयोग करना आसान बनाता है । निचे देखो

import 'package:jiffy/jiffy.dart';   

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

आप निम्न कार्य भी कर सकते हैं

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

और आप अपने DateTime ऑब्जेक्ट, A string और 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

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 अब = DateTime.now (); तारीख समय = नया दिनांक समय (अब, अब, माह, अब। दिन); प्रिंट (date.toString ()। सबरिंग (0, 10));
राजू गुप्ता

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 प्रारूप के लिए लाइब्रेरी का उपयोग किए बिना SS कोड का उपयोग करें ==

var stringList =  DateTime.now().toIso8601String().split(new RegExp(r"[T\.]"));
var formatedDate = "${stringList[0]} ${stringList[1]}";
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.