flutter 中時(shí)間和日期獲取以及格式轉(zhuǎn)換

? 前言:

? ? ? ? 在Android? 和iOS? 常用的App里面經(jīng)常有獲取當(dāng)前時(shí)間和日期 原生的android? 和iOS 有系統(tǒng)的api提供很詳細(xì) 這邊我就不展開(kāi)講了 今天主要說(shuō)說(shuō)flutter 中如何獲取時(shí)間和日期 以及時(shí)間戳的格式轉(zhuǎn)換



效果圖:

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 日期選擇?

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?時(shí)間選擇?


1需要用到的三方庫(kù)? 以及選擇器中文漢的配置 :

flutter_localizations:

sdk: flutter

date_format: ^1.0.8

把這些復(fù)制到 pubspec.yaml 里面?


然后在控制臺(tái)敲flutter? pub get? 命令下載依賴

2 具體的效果實(shí)現(xiàn)

我們寫(xiě)了兩個(gè)Row組件里面嵌套??Text? 和Icon 來(lái)進(jìn)行測(cè)試? 外層嵌套InkWell 來(lái)實(shí)現(xiàn)點(diǎn)擊效果??

我們?cè)趏nTap方法里面來(lái)對(duì)我們獲取時(shí)間和日期進(jìn)行操作??

下面我們?cè)僬f(shuō)明我們?cè)趺传@取但當(dāng)前時(shí)間和日期??

首先要import 進(jìn)來(lái)??import 'package:date_format/date_format.dart';? ?依賴?

然后通過(guò)

??DateTime_nowDate=DateTime.now();

var _nowTime=TimeOfDay(hour:12,minute:20);?

分別獲取當(dāng)前日期和時(shí)間

然后我們調(diào)起的日期選擇器和時(shí)間選擇器

日期選擇器 :

_showDatePciker()async{

var? reslut =await showDatePicker(

context:context,

? ? ? initialDate:_nowDate,

? ? ? firstDate:DateTime(1900),

? ? ? lastDate:DateTime(2050),

? ? ? );

? ? setState(() {

this._nowDate=reslut;

? ? });

}

時(shí)間選擇器 :


_showTimePciker()async {

var? result=await? showTimePicker(

context:context,

? ? ? ? initialTime:_nowTime);

? setState(() {

this._nowTime=result;

? });

}


分別在setState 方法里面 將result 賦值給當(dāng)前的時(shí)間和日期變量??

this._nowDate=reslut;??

this._nowTime=result;

3我們?cè)诰唧w顯示組件里面替換

InkWell(

child:Row(

mainAxisAlignment: MainAxisAlignment.center,

? ? ? children: [

Text("${formatDate(_nowDate, [yyyy, '年', mm, '月', dd])}"),

? ? ? ? Icon(Icons.arrow_drop_down)

],

? ? ),

? ? onTap: _showDatePciker

/* onTap: _showDatePciker()*/

),

我們要注意將獲取的時(shí)間格式進(jìn)行轉(zhuǎn)換?

日期 :Text("${formatDate(_nowDate, [yyyy, '年', mm, '月', dd])}"),?

時(shí)間:Text("${_nowTime.format(context)}"),

到此我們就能實(shí)現(xiàn)日期選擇和時(shí)間選擇 但是選擇器的界面默認(rèn)是英文的 為了符合國(guó)人習(xí)慣我們要做漢化處理?

我們需要在程序入口的MaterialApp 里面進(jìn)行配置?


MaterialApp(

home:Scaffold(

appBar:AppBar(

title:Text("主頁(yè)"),

? ? ),

? ? body:MyHomePage(),

? ),

? localizationsDelegates: [

//此處

? ? GlobalMaterialLocalizations.delegate,

? ? GlobalWidgetsLocalizations.delegate,

? ],

? supportedLocales: [

//此處

? ? const Locale('zh', 'CH'),

? ? const Locale('en', 'US'),

? ],

);

配置以后 如果手機(jī)是中文的ROM系統(tǒng) 選擇器界面就會(huì)變成中文顯示? ?




最后總結(jié):

這個(gè)時(shí)間日期選擇相對(duì)簡(jiǎn)單需要用到三方庫(kù)?date_format: ^1.0.8? ? 和語(yǔ)言國(guó)際化配置?flutter_localizations:sdk: flutter? ,相對(duì)簡(jiǎn)單 ,和原生app時(shí)間選擇器效果 也非常的接近 算是比較好用,我也是一個(gè)flutter學(xué)習(xí)的新手 有興趣的同學(xué)可以私聊多多交流??


最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容