【问题标题】:bind date to inpubtbox with angular dart使用 angular dart 将日期绑定到 inpubtbox
【发布时间】:2017-04-03 14:52:04
【问题描述】:

我正在构建一个 web 应用程序,其中包含带有日期的输入框。如何将数据绑定到我的后台代码? 我试过直接做,但我猜一个输入框只能处理字符串,所以一个转换为字符串的方法等等。

<div>
    <label>start date: </label>
    <input [(ngModel)]="item.stringStartDate" placeholder="start date" type="date">
</div>


void set startDate(DateTime startDate)
{
    _startDate = startDate;
}

void set stringStartDate(String startDate)
{
    this.startDate = parseDate(startDate);
}


static DateTime parseDate(String formattedString)
{
    final RegExp r = new RegExp(
        r'^(\d\d)-?(\d\d)-?([+-]?\d{4,6})');

    Match match = r.firstMatch(formattedString);
    if (match != null)
    {
        int years = int.parse(match[3]);
        int month = int.parse(match[2]);
        int day = int.parse(match[1]);

        return new DateTime(years, month, day);
    }
    else
    {
        throw new FormatException("Invalid date format", formattedString);
    }
}

static String dateToString(DateTime date){
    if (date == null)
        return null;

    String ret = "${date.year}/";

    if (date.month < 10)
        ret+="0";
    ret+="${date.month}/";

    if (date.day < 10)
        ret += "0";
    ret+="${date.day}";

    return ret;
}

【问题讨论】:

    标签: html angular-dart inputbox


    【解决方案1】:

    应该用-而不是/分隔

    您可以使用toIso8601Stringsubstring

    DateTime _date = new DateTime.now();
    
    String get date => _date.toIso8601String().substring(0, 10);
    
    void set date(value) {
      if (value is DateTime) {
        _date = value;
      } else if (value is String) {
        _date = DateTime.parse(value);
      }
    }
    

    【讨论】:

      猜你喜欢
      • 2017-12-23
      • 1970-01-01
      • 2016-11-05
      • 1970-01-01
      • 2018-04-10
      • 1970-01-01
      • 2018-09-20
      • 2014-01-25
      • 1970-01-01
      相关资源
      最近更新 更多