簡體   English   中英

我如何在 flutter 中獲取日期月份年份值

[英]how i get date month year values in flutter

我創建了會議頁面,它有兩個標簽欄視圖,一個是即將到來的,另一個是已完成的會議,所以我使用了 where 條件,但它只需要日期,但我想要日期月份和年份。這是我的代碼。

StreamBuilder(
  stream:meeting
      .where("Meeting Type",isEqualTo: type)
     .where("Meeting Date",isLessThanOrEqualTo: DateFormat('dd/MM/yyyy').format(DateTime.now()))
      .snapshots(),
  builder:(context,AsyncSnapshot<QuerySnapshot>streamSnapshot){
    if (streamSnapshot.hasData){
      QuerySnapshot<Object?>?querySnapshot = streamSnapshot.data;
      List<QueryDocumentSnapshot> documents = querySnapshot!.docs;
      List<Map>items = documents.map((e)=>{
        "Meeting Date":e['Meeting Date'],
        "Meeting Name":e['Meeting Name'],
        "Place":e['Place'],
        "Time From":e['Time From'],
        "To Time":e['To Time']
      }).toList();

會議開始時應顯示在即將到來的頁面中,完成后應顯示在已完成的頁面中。

我們必須在這里的可能性:

1. 您的會議日期作為字符串存儲在您的數據庫中

請注意,您可能不會像那樣存儲時間,而是使用 Firestore 提供的時間戳。

但在這種情況下,您的.where("Meeting Date",isLessThanOrEqualTo:將按字典順序執行日期之間的比較。

因此,您需要一種格式來匹配時間順序和詞匯順序,如YYYY-MM-DD (任何年/月/日格式都可以)。

它可能需要更新您在 Firestore 中的現有文檔以匹配它。

StreamBuilder(
            stream:meeting
                .where("Meeting Type",isEqualTo: type)
               .where("Meeting Date",isLessThanOrEqualTo: DateFormat('yyyy/MM/dd').format(DateTime.now()))//Use a format who order String in the same order as time
                .snapshots(),
            builder:(context,AsyncSnapshot<QuerySnapshot>streamSnapshot){
              if (streamSnapshot.hasData){
                QuerySnapshot<Object?>?querySnapshot = streamSnapshot.data;
                List<QueryDocumentSnapshot> documents = querySnapshot!.docs;
                List<Map>items = documents.map((e)=>{
                  "Meeting Date":e['Meeting Date'],
                  "Meeting Name":e['Meeting Name'],
                  "Place":e['Place'],
                  "Time From":e['Time From'],
                  "To Time":e['To Time']
                }).toList();

2. 您的會議日期作為時間戳存儲在您的基地

在這種情況下,不需要格式化,您可以按原樣將時間傳遞給您的查詢。

StreamBuilder(
            stream:meeting
                .where("Meeting Type",isEqualTo: type)
               .where("Meeting Date",isLessThanOrEqualTo: Timestamp.now())//Using the Timestamp object provided by the firestore library
                .snapshots(),
            builder:(context,AsyncSnapshot<QuerySnapshot>streamSnapshot){
              if (streamSnapshot.hasData){
                QuerySnapshot<Object?>?querySnapshot = streamSnapshot.data;
                List<QueryDocumentSnapshot> documents = querySnapshot!.docs;
                List<Map>items = documents.map((e)=>{
                  "Meeting Date":e['Meeting Date'],
                  "Meeting Name":e['Meeting Name'],
                  "Place":e['Place'],
                  "Time From":e['Time From'],
                  "To Time":e['To Time']
                }).toList();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM