如何用Dart格式化日期?

您可以使用intl package来格式化日期。

对于en_US格式,这是相当简单:

import 'package:intl/intl.dart'; 

main() { 
    var now = new DateTime.now(); 
    var formatter = new DateFormat('yyyy-MM-dd'); 
    String formatted = formatter.format(now); 
    print(formatted); // something like 2013-04-20 
} 

有格式化多种选择。从文档:

ICU Name     Skeleton 
--------     -------- 
DAY       d 
ABBR_WEEKDAY     E 
WEEKDAY      EEEE 
ABBR_STANDALONE_MONTH  LLL 
STANDALONE_MONTH    LLLL 
NUM_MONTH     M 
NUM_MONTH_DAY    Md 
NUM_MONTH_WEEKDAY_DAY  MEd 
ABBR_MONTH     MMM 
ABBR_MONTH_DAY    MMMd 
ABBR_MONTH_WEEKDAY_DAY  MMMEd 
MONTH      MMMM 
MONTH_DAY     MMMMd 
MONTH_WEEKDAY_DAY   MMMMEEEEd 
ABBR_QUARTER     QQQ 
QUARTER      QQQQ 
YEAR       y 
YEAR_NUM_MONTH    yM 
YEAR_NUM_MONTH_DAY   yMd 
YEAR_NUM_MONTH_WEEKDAY_DAY yMEd 
YEAR_ABBR_MONTH    yMMM 
YEAR_ABBR_MONTH_DAY   yMMMd 
YEAR_ABBR_MONTH_WEEKDAY_DAY yMMMEd 
YEAR_MONTH     yMMMM 
YEAR_MONTH_DAY    yMMMMd 
YEAR_MONTH_WEEKDAY_DAY  yMMMMEEEEd 
YEAR_ABBR_QUARTER   yQQQ 
YEAR_QUARTER     yQQQQ 
HOUR24      H 
HOUR24_MINUTE    Hm 
HOUR24_MINUTE_SECOND   Hms 
HOUR       j 
HOUR_MINUTE     jm 
HOUR_MINUTE_SECOND   jms 
HOUR_MINUTE_GENERIC_TZ  jmv 
HOUR_MINUTE_TZ    jmz 
HOUR_GENERIC_TZ    jv 
HOUR_TZ      jz 
MINUTE      m 
MINUTE_SECOND    ms 
SECOND      s 

对于非en_US日期,您需要显式加载区域设置。有关更多信息,请参阅https://www.dartdocs.org/documentation/intl/latest/intl/DateFormat-class.html

flutter 枚举&类型

枚举

  1. 枚举是一种有穷序列集的数据类型
  2. 使用关键字enum定义一个枚举
  3. 枚举常用于代替常量,控制语句等
void testDart(){
  var currentSeason = Season.summer;
  switch (currentSeason) {
    case Season.spring:
      print('1-3月');
      break;
    case Season.summer:
      print('4-6月');
      break;
    case Season.autumn:
      print('7-9月');
      break;
    case Season.winter:
      print('10-12月');
      break;
  }
}
enum Season {
  spring,
  summer,
  autumn,
  winter
}

定义常量需要四个,而用枚举一个就行(Javascript中对象常量的属性是可以修改的)

Dart枚举特性

  1. index从0开始,一次累加
  2. 不能指定原始值
  3. 不能添加方法
var currentSeason = Season.summer;
  print(currentSeason.index);
错误
enum Season = {
    spring = 10; //错误
}

泛型

  1. Dart中的类型是可选的(dynamic),可使用泛型限定类型
  2. 使用泛型能够有效的减少代码重复
void testDart(){
  var list = new List();
  list.add(1);
  list.add('1');

  var list1 = new List<String>();
  list1.add('1');
}

泛型的使用

  1. 类的泛型
  2. 方法的泛型
    类上使用泛型
void testDart(){
  var utils = new Utils<String>();
  utils.put('xxxx');
  var utils1 = new Utils<int>();
  utils1.put(11);

}
class Utils<T>{
  T element;
  String elementStr;
  void put(T element){
    this.element = element;
  }
}

方法使用泛型

void testDart(){
  var utils = new Utils();
  utils.put<String>('11');
}
class Utils{
  String elementStr;
  void put<T>(T element){
    print(element);
  }
}