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

问题描述 投票:0回答:1

如何将一个整数(如“20190331”)格式化为“2019-03-31”,而不先将其转换为日期而不使用子字符串将其拆分。日期在SQLite(SQFlite)中存储为整数。我想在1行中做这样的(伪代码)注意:整数:

(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代码在格式化时将其转换为8行,我喜欢保持代码紧凑。

dart flutter
1个回答
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));
© www.soinside.com 2019 - 2024. All rights reserved.