2017-04-03 2 views
1

Ich baue eine Webapp, in der Eingabefelder mit einem Datum sind. Wie kann ich die Daten an meinen Hintergrundcode binden? Ich habe versucht, es direkt zu tun, aber ich denke, ein Eingabefeld kann nur mit Strings umgehen, so dass eine Umwandlung in String-Methode und so weiter gemacht wird.Datum in inboxbox mit Winkelpfeil binden

<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; 
} 

Antwort

1

es durch - statt /

getrennt werden sollten, können Sie verwenden toIso8601String und substring

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); 
    } 
} 
+0

den Trick dank tat –