Flutter和Dart-如何在一行代码中格式化整数日期

时间:2019-03-31 17:10:00

标签: dart flutter

如何在不首先将其转换为日期且不使用子字符串拆分的情况下格式化“ 20190331”之类的整数以输出为“ 2019-03-31”。日期在SQLite(SQFlite)中存储为整数。我想在1行中执行此操作,例如(伪代码)注意:integer:

(pseudo) String sDate = fmt("####'-'##'-'##", map["DueDate"]); 

我知道我可以做到,例如:

String sDate = map["DueDate"].toString();
sDate = sDate.substring(0,4)+'-'+sDate.substring(4,6)+'-'+sDate.substring(6,8);

但这是两行代码,Visual Studio Code在格式化时会将其转换为8行,我希望保持代码紧凑。

1 个答案:

答案 0 :(得分:1)

编写一个名为fmt的函数,然后像伪代码中那样调用它。

String fmt(String f, int i) {
  StringBuffer sb = StringBuffer();
  RuneIterator format = RuneIterator(f);
  RuneIterator input = RuneIterator(i.toString());
  while (format.moveNext()) {
    var currentAsString = format.currentAsString;
    if (currentAsString == '#') {
      input.moveNext();
      sb.write(input.currentAsString);
    } else {
      sb.write(currentAsString);
    }
  }
  return sb.toString();
}

一行:

  print(fmt('####-##-##', 20190331));