Flutter : Convert Integer To Month
4,872
Solution 1
Is this you want ?
replace month
with you month int value
DateFormat('MMMM').format(DateTime(0, month))
Value: January,Feburary ...
Solution 2
DateFormat.MMMM().format(date)
Simple and allows future localization. You can put your locale inside of .MMMM()
. This is the best and most scalable solution.
Solution 3
const Map<int,String> monthsInYear = {
1: "January",
2: "February",
3: "March",
4: “April”,
5: “May”,
6: “June”
…
12: "December"
}
In Your ListView
ListView.separated(
separatorBuilder: (ctx, index) => Divider(),
itemCount: 12,
shrinkWrap: true,
itemBuilder: (BuildContext context, int index) {
final indexOrder = index + 1;
final result = listTest[index];
listTest.sort((a, b) => a.month.compareTo(b.month));
return InkWell(
onTap: () => showDialog(
context: context,
builder: (ctxDialog) => FormElectricTenant(),
),
child: Padding(
padding: const EdgeInsets.symmetric(vertical: 8.0),
child: Row(
children: <Widget>[
titleHeaderRow(title: '$indexOrder' ?? '0'),
titleHeaderRow(title: '${monthsInYear[result.month]}' ?? '---'),
titleHeaderRow(title: '${result.value}' ?? '0'),
],
),
),
);
},
);

Comments
-
Zeffry Reynando 18 minutes
I have Model and Dummy Data To testing like this :
Model
class TestingLoopingModel { String id; int month; int year; int value; TestingLoopingModel({ this.id, this.month, this.year, this.value, }); }
Dummy Data
List<TestingLoopingModel> listTest = [ //TODO Month 12 And 10 is not exist TestingLoopingModel( id: DateTime.now().toString(), month: 2, year: 2020, value: 2000, ), TestingLoopingModel( id: DateTime.now().toString(), month: 4, year: 2020, value: 1500, ), TestingLoopingModel( id: DateTime.now().toString(), month: 6, year: 2020, value: 3000, ), TestingLoopingModel( id: DateTime.now().toString(), month: 8, year: 2020, value: 3500, ), TestingLoopingModel( id: DateTime.now().toString(), month: 1, year: 2020, value: 5000, ), TestingLoopingModel( id: DateTime.now().toString(), month: 3, year: 2020, value: 4500, ), TestingLoopingModel( id: DateTime.now().toString(), month: 5, year: 2020, value: 2111, ), TestingLoopingModel( id: DateTime.now().toString(), month: 7, year: 2020, value: 5555, ), TestingLoopingModel( id: DateTime.now().toString(), month: 9, year: 2020, value: 333, ), TestingLoopingModel( id: DateTime.now().toString(), month: 11, year: 2020, value: 2222, ), ];
I want Month in my listTest convert to Month Name Something Like January,Feburary,March,April,Mei,etc.... How can i do this ?
I know i can use this Intl Packages like this
DateFormat.MMMM().format(???);
But format required DateTime and in my list Month is integer.Thank's
View
SizedBox( height: sizes.height(context) / 1.7, child: ListView.separated( separatorBuilder: (ctx, index) => Divider(), itemCount: 12, shrinkWrap: true, itemBuilder: (BuildContext context, int index) { final indexOrder = index + 1; final result = listTest[index]; listTest.sort((a, b) => a.month.compareTo(b.month)); return InkWell( onTap: () => showDialog( context: context, builder: (ctxDialog) => FormElectricTenant(), ), child: Padding( padding: const EdgeInsets.symmetric(vertical: 8.0), child: Row( children: <Widget>[ titleHeaderRow(title: '$indexOrder' ?? '0'), titleHeaderRow(title: '${result.month}' ?? '0'), titleHeaderRow(title: '${result.value}' ?? '0'), ], ), ), ); }, ), ),
-
Gaurav Mall over 2 yearsDid you try creating a new
DateTime
object and changing its month?
-
-
Thepeanut over 2 yearsOr you could have gone the easy way, with const months = <String>[ 'Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec', ]; and something like print(months[0]) (or print(months[model.month - 1]) in your case) to show it's name.
-
Zeffry Reynando over 2 yearsIn my case , month from my database is integer like 1,2,3,4,5 Not like you said. So i should convert it from integer to Month Name
-
Thepeanut over 2 yearsYou don't need to convert anything. Lists start with index 0, so 0 - is Jan, 1 - Feb and so on. For example - you just use months(0) to get Jan.
-
RukshanJS over 1 yearThis is just great. Thanks. Also, if anyone wants an abbreviated format like "Jan", "Feb" etc., you can put three Ms like
DateFormat('MMM').format(DateTime(0, month))