Insert commas into string flutter - flutter

Say I have a string value as: June 22 2022 and I want to add comma with code such that it prints out this value: June 22, 2022. How do I achieve that?

In this particular case, you could use DateTime's DateFormatter:
import 'package:intl/intl.dart';
void main() {
DateFormat inputFormatter = DateFormat('MMMM dd yyyy');
DateFormat outputFormatter = DateFormat('MMMM dd, yyyy');
DateTime date = inputFormatter.parse('February 13 2042');
String formatted = outputFormatter.format(date);
print(formatted);
}
Console log
February 13, 2042

Related

Change this "2022-07-26T12:10:07.000+0000" format to DateTime with 12 hrs format? Flutter

How i can extract the Time alone in this format "2022-07-26T12:10:07.000+0000" and show in 12hrs.
The output i am supposed to get is "5:40 PM", but i am getting 12.10 AM.
How to get exact time in the above mentioned format?
This is the method i followed to parse the DateTime.
String getTimeStringNew(String date) {
DateFormat dateFormat = DateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS+SSSS");
var dateValue = dateFormat.parse(date);
DateFormat dateFormat1 = DateFormat("hh:mm a");
var value = dateFormat1.format(dateValue);
return value;}
In this method i am getting "12:10 AM".
But correct time is "5.40 PM".
What is the mistake i am doing here. Please correct.
2022-07-26T12:10:07.000+0000
Here 2022 is year
07 is month
26 is day
12 is hour
10 is minutes
07 is seconds.
So you will get 12.10 only
Maybe you are recieving the time in UTC.
You can use .toLocal to convert it to local time
var dateLocal = dateUtc.toLocal();
Edit
String getTimeStringNew(String date) {
DateTime _localDate = DateTime.parse(date).toLocal();
DateFormat dateFormat = DateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS+SSSS");
var dateValue = dateFormat.format(_localDate);
DateFormat dateFormat1 = DateFormat("hh:mm a");
var value = dateFormat1.format(_localDate);
return value;}

Changing Date and time Time formate from Json Response in dart?

Hello friend I am new in dart fetching data from Api now I want format this date time. In this way => Mar 20, 2021 11:36 am.. While json response coming this way =>":"2021-03-20 11:36:00
Here is my json full response file please check answer the question?
"message":"Data fetched successfully",
"data":[
{
"id":1,
"public_id":"ed0042ca-5a14-476b-9b65-66461efa81ae",
"title":"LIVE CONCERT",
"image":"https:\/\/livinghopemobile.com\/public\/storage\/event\/200321_113705_image.png",
"datetime":"2021-03-20 11:36:00", <=
"description":"LIVE CONCERT",
"created_at":"2021-03-20T06:37:05.000000Z",
"updated_at":"2021-03-29T07:18:50.000000Z"
}
]
}
String date = DateFormat("MMM dd, yyyy hh:mm a").format(DateTime.parse("2021-03-20 11:36:00"));
print(date); // =>Mar 20, 2021 11:36 AM
try out this
var date = "2021-03-24T08:57:47.812"
var dateTime = DateTime.parse("$date");
var stdTime = DateFormat('MMM d, yy hh:mm a').format(dateTime).toString();
Try this
var time = DateTime.parse(data[0]['datetime']);
And then you can look up here on the dates format list Here
var myTime = DateFormat('MMM d, yy hh:mm a').format(time);

Flutter/Dart Set Hour and Minutes in Current Date [duplicate]

I have an instance of DateTime and I would like to format that to a String. How do I do that? I want to turn the date into a string, something like "2013-04-20".
You can use the intl package (installer) to format dates.
For en_US formats, it's quite simple:
import 'package:intl/intl.dart';
main() {
final DateTime now = DateTime.now();
final DateFormat formatter = DateFormat('yyyy-MM-dd');
final String formatted = formatter.format(now);
print(formatted); // something like 2013-04-20
}
There are many options for formatting. From the docs:
ICU Name Skeleton
-------- --------
DAY d
ABBR_WEEKDAY E
WEEKDAY EEEE
ABBR_STANDALONE_MONTH LLL
STANDALONE_MONTH LLLL
NUM_MONTH M
NUM_MONTH_DAY Md
NUM_MONTH_WEEKDAY_DAY MEd
ABBR_MONTH MMM
ABBR_MONTH_DAY MMMd
ABBR_MONTH_WEEKDAY_DAY MMMEd
MONTH MMMM
MONTH_DAY MMMMd
MONTH_WEEKDAY_DAY MMMMEEEEd
ABBR_QUARTER QQQ
QUARTER QQQQ
YEAR y
YEAR_NUM_MONTH yM
YEAR_NUM_MONTH_DAY yMd
YEAR_NUM_MONTH_WEEKDAY_DAY yMEd
YEAR_ABBR_MONTH yMMM
YEAR_ABBR_MONTH_DAY yMMMd
YEAR_ABBR_MONTH_WEEKDAY_DAY yMMMEd
YEAR_MONTH yMMMM
YEAR_MONTH_DAY yMMMMd
YEAR_MONTH_WEEKDAY_DAY yMMMMEEEEd
YEAR_ABBR_QUARTER yQQQ
YEAR_QUARTER yQQQQ
HOUR24 H
HOUR24_MINUTE Hm
HOUR24_MINUTE_SECOND Hms
HOUR j
HOUR_MINUTE jm
HOUR_MINUTE_SECOND jms
HOUR_MINUTE_GENERIC_TZ jmv
HOUR_MINUTE_TZ jmz
HOUR_GENERIC_TZ jv
HOUR_TZ jz
MINUTE m
MINUTE_SECOND ms
SECOND s
For non-en_US dates, you need to explicitly load in the locale. See the DateFormat docs for more info. The date_symbol_data_local.dart contains all of the formats for each country/language, if you would like a more in-depth look.
This will work too:
DateTime today = new DateTime.now();
String dateSlug ="${today.year.toString()}-${today.month.toString().padLeft(2,'0')}-${today.day.toString().padLeft(2,'0')}";
print(dateSlug);
pubspec.yaml:
dependencies:
intl:
main.dart:
import 'package:intl/intl.dart'; // for date format
import 'package:intl/date_symbol_data_local.dart'; // for other locales
void main() {
var now = DateTime.now();
print(DateFormat().format(now)); // This will return date using the default locale
print(DateFormat('yyyy-MM-dd hh:mm:ss').format(now));
print(DateFormat.yMMMMd().format(now)); // print long date
print(DateFormat.yMd().format(now)); // print short date
print(DateFormat.jms().format(now)); // print time
initializeDateFormatting('es'); // This will initialize Spanish locale
print(DateFormat.yMMMMd('es').format(now)); // print long date in Spanish format
print(DateFormat.yMd('es').format(now)); // print short date in Spanish format
print(DateFormat.jms('es').format(now)); // print time in Spanish format
}
Result:
May 31, 2020 5:41:42 PM
2020-05-31 05:41:42
May 31, 2020
5/31/2020
5:41:42 PM
31 de mayo de 2020
31/5/2020
17:41:42
You can also specify the date format like stated earlier: https://pub.dev/documentation/intl/latest/intl/DateFormat-class.html
import 'package:intl/intl.dart';
String formatDate(DateTime date) => new DateFormat("MMMM d").format(date);
Produces: March 4
If someone wants to convert a date in string format to some other string format first use DateTime.parse("2019-09-30") then pass it to DateFormat("date pattern").format() like
dateFormate = DateFormat("dd-MM-yyyy").format(DateTime.parse("2019-09-30"));
Reference: Dart - How to change format of simple date string which is in yyyy-MM-dd to dd-MM-yyyy
You can use this method as well, if you don't want to add another library
DateTime dateTime = DateTime.now();
String YYYY_MM_DD = dateTime.toIso8601String().split('T').first;
print(YYYY_MM_DD); //2020-11-23
This give you the date like in a social network : ["today","yesterday","dayoftheweek",etc..]
void main() {
DateTime now = new DateTime(2018,6,26);
print(date(now));
}
String date(DateTime tm) {
DateTime today = new DateTime.now();
Duration oneDay = new Duration(days: 1);
Duration twoDay = new Duration(days: 2);
Duration oneWeek = new Duration(days: 7);
String month;
switch (tm.month) {
case 1:
month = "january";
break;
case 2:
month = "february";
break;
case 3:
month = "march";
break;
case 4:
month = "april";
break;
case 5:
month = "may";
break;
case 6:
month = "june";
break;
case 7:
month = "july";
break;
case 8:
month = "august";
break;
case 9:
month = "september";
break;
case 10:
month = "october";
break;
case 11:
month = "november";
break;
case 12:
month = "december";
break;
}
Duration difference = today.difference(tm);
if (difference.compareTo(oneDay) < 1) {
return "today";
} else if (difference.compareTo(twoDay) < 1) {
return "yesterday";
} else if (difference.compareTo(oneWeek) < 1) {
switch (tm.weekday) {
case 1:
return "monday";
case 2:
return "tuesday";
case 3:
return "wednesday";
case 4:
return "thursday";
case 5:
return "friday";
case 6:
return "saturday";
case 7:
return "sunday";
}
} else if (tm.year == today.year) {
return '${tm.day} $month';
} else {
return '${tm.day} $month ${tm.year}';
}
}
You can use the intl package to format dates in flutter.
void main() {
final DateTime now = DateTime.now();
final DateFormat format = DateFormat('yyyy-MM-dd');
final String formatted = format.format(now);
// 2021-03-02
}
or you can use date_format package to format dates in flutter.
import 'package:date_format/date_format.dart';
final formattedStr = formatDate(DateTime.now(), [dd, '-', mm, '-', yyyy]);
//02-03-2021
Another way, using intl package.
Create an extension of DateTime:
date_time_extension.dart
import 'package:intl/date_symbol_data_local.dart';
import 'package:intl/intl.dart';
extension DateTimeExtension on DateTime {
String format([String pattern = 'dd/MM/yyyy', String? locale]) {
if (locale != null && locale.isNotEmpty) {
initializeDateFormatting(locale);
}
return DateFormat(pattern, locale).format(this);
}
}
Import this file where you are going to use DateTime type, and you can use it like this:
DateTime.now().format();
DateTime.now().format('MM/yyyy');
DateTime.now().format('MM/yyyy', 'es');
There is a package date_format
dependencies:
date_format:
code
import 'package:date_format/date_format.dart';
final formattedStr = formatDate(
yourDateTime, [dd, '.', mm, '.', yy, ' ', HH, ':', nn]);
// output example "29.03.19 07:00"
Pay attention: minutes are nn
link to the package
main() {
final String pattern = 'yyyy-MM-dd';
final String formatted = DateFormat(pattern).format(DateTime.now());
print(formatted);
}
Changing yyyy-MM-dd string you can change your date format. I made app for play with this pattern string.
You can experiment format string in my app It made with flutter.
https://biplobsd.github.io/EpochConverterApp
Here you can see how can I edit the pattern and this effect showing on top
/// Get date as a string for display.
String getFormattedDate(String date) {
/// Convert into local date format.
var localDate = DateTime.parse(date).toLocal();
/// inputFormat - format getting from api or other func.
/// e.g If 2021-05-27 9:34:12.781341 then format must be yyyy-MM-dd HH:mm
/// If 27/05/2021 9:34:12.781341 then format must be dd/MM/yyyy HH:mm
var inputFormat = DateFormat('yyyy-MM-dd HH:mm');
var inputDate = inputFormat.parse(localDate.toString());
/// outputFormat - convert into format you want to show.
var outputFormat = DateFormat('dd/MM/yyyy HH:mm');
var outputDate = outputFormat.format(inputDate);
return outputDate.toString();
}
Set your project intl pakage
dateTimeFormet (date){
//MM-dd-yyyy
//yyyy-MM-dd
return DateFormat('dd-MM-yyyy').format(date);// you can set your formet
}
void main (){
var date = 01-11-2022 00 : 00
var _datetime = dateTimeFormet(date);
print(_dateTime);
}
In the case you want to combine several date format into one, this is how we can do using intl.
DateFormat('yMMMd').addPattern(DateFormat.HOUR24_MINUTE).format(yourDateTime))
NO DEPENDENCY METHOD [FOR DISPLAYING DATE AS FORMATTED STRING]
If you want to show your DateTime value as a day/month/year or any other format you like, string interpolation can be handy :
"${_date.day} / ${_date.month} / ${_date.year}"
sample output :
23 / 4 / 1920
I don't want to use any additional library, so i went this way.
handling yearly quarters, from string to DateTime, I didn't find proper solution so made this:
List<String> dateAsList = 'Q1 2001'.split(' ');
DateTime dateTime = DateTime.now();
String quarter = dateAsList[0];
int year = int.parse(dateAsList[1]);
switch(quarter) {
case "Q1": dateTime = DateTime(year, 1);
break;
case "Q2": dateTime = DateTime(year, 4);
break;
case "Q3": dateTime = DateTime(year, 7);
break;
case "Q4": dateTime = DateTime(year, 10);
break;
}
To get a nice user-friendly string that includes both the date and the time, you can use this:
import 'package:intl/intl.dart';
main() {
final DateTime someDateTime = DateTime(2017, 9, 7, 17, 30);
final DateFormat formatter = DateFormat.yMMMd().add_jms();
final String formatted = formatter.format(someDateTime);
print(formatted); // Sep 7, 2017 5:30:00 PM (in the US)
}
import 'package:intl/intl.dart';
main() {
var formattedDate = new DateTime.Format('yyyy-MM-dd').DateTime.now();
print(formattedDate); // something like 2020-04-16
}
For more details can refer DateFormat Documentation
String formatDate(String date) {
return date.substring(0, 10).split('-').reversed.join().replaceAll('-', '/');
}
From format "yyyy-mm-dd H:i:s"
String dateConverter(String date) {
// Input date Format
final format = DateFormat("dd-MM-yyyy");
DateTime gettingDate = format.parse(date);
final DateFormat formatter = DateFormat('yyyy-MM-dd');
// Output Date Format
final String formatted = formatter.format(gettingDate);
return date;
}
A simpler way:
new DateFormat("dd-MM-y").format(YOUR_DATETIME_HERE)
Use "H:mm" to see full minutes like 13:08 not 13:8
Since the flutter usual Datetime library doesn't know the locale for Germany - neither de, nor DE, nor de_DE, nor de-DE or any other combinations, for example if you want to have the name of the month or the name of the day written in human readable string, I suggest you to use the following code.
install pub flutter pub add date_format
String formattedDate = formatDate(DateTime(year, month, day),[dd,'. ', MM, ' ', yyyy], locale: GermanDateLocale());
Current Day:
DateTime.now().day, //something like 26
Current Month:
DateTime.now().month, //something like 4
Current Year:
DateTime.now().year, //something like 2022
Current Houre:
DateTime.now().hour, //something like 12
Current Minute:
DateTime.now().minute, //something like 13
Current Second:
DateTime.now().second, //something like 44

Dart parse date with +0000

I am using the Twitter api for getting tweets in a Flutte App.
The api returns a formatted date like this:
Wed Jun 12 00:08:35 +0000 2019
DateTime formatTwitterDate() {
final format = DateFormat('EEE MMM dd hh:mm:ss +0000 yyyy'); //todo failed to resolve +0000
return format.parse(this);
}
This is the only formatter I got working. How can I support +0000?
Used this javascript implementation and transformed it to a DartExtension
https://stackoverflow.com/a/2611438/5115254
extension StringToDateTime on String {
DateTime formatTwitterDate() {
final newDateString = '${replaceAll('+0000 ', '')} UTC';
final format = DateFormat('EEE MMM dd hh:mm:ss yyyy Z');
return format.parse(newDateString);
}
}
Porting this answer to dart
var s = "Fri Apr 09 12:53:54 +0000 2010";
print(s);
final newString =
s.replaceAllMapped(RegExp(r'\w+ (\w+) (\d+) ([\d:]+) \+0000 (\d+)'), (m) {
return "${m[1]} ${m[2]} ${m[4]} ${m[3]} UTC";
});
print(newString);

Read timestamp field and print as 12 December 2017 2:34:23

Initially, I had used string format for the field timestamp and I was able to convert it to 12 December 2017 2:34:23 format using toData().toString(). I need to do the same thing when the field timestamp is in timestamp format. Can I get some help on this?
You can get a DateTime variable from a timestamp using
var date = new DateTime.fromMicrosecondsSinceEpoch(timestamp);
Once you have your date you can format however you want using a DateFormat for example:
var formatter = new DateFormat('yyyy-MM-dd'); // You can change the format here
String formatted = formatter.format(date);
print(formatted); // Something like 2019-04-20
just check out this example below :
var timestamp =1583772663;
var format = new DateFormat('dd MMMM yyyy, hh:mm:ss');
var date = new DateTime.fromMillisecondsSinceEpoch(timestamp * 1000);
var value = format.format(date);
print(value);
//output : 09 March 2020, 10:21:03
let me know if it works.