Sam Cromer
Sam Cromer

Reputation: 2213

Format date into a month count and years

We have a DateTime value returning from JSON its coming thru as "10/9/2016 4:46:48 PM" .

What we need to do with it is format it to months or years past like so:

10/9/2016 = 3 years in the past.

The value 10/20/2019 = 3 months

Is this possible?

I'm guessing we would need to grab the month and year and subtract from today's date.

Upvotes: 0

Views: 121

Answers (2)

Antonio Valentic
Antonio Valentic

Reputation: 370

So I would create a function which will calculate difference between today's date and DateTime passed to it. It would look like this

String calculateDifference(DateTime dateTime) {
    String text = "months";
    double difference = DateTime.now().difference(dateTime).inDays / 30;

    if (difference > 11) {
      difference = difference / 12;
      text = "years";
    }

    return "${difference.toStringAsFixed(0)} $text";
}

So you just need to parse the date from your JSON to DateTime object and pass it to a variable. You can also add one more condition to return value for days

Upvotes: 1

DennisSzymanski
DennisSzymanski

Reputation: 618

You can use .difference on DateTime

final dateInThePast = DateTime(2018, 1, 7);
final dateNow = DateTime.now();
final difference = dateNow.difference(dateInThePast).inDays;

And then calculate from Days to Months / Years

Upvotes: 0

Related Questions