我的时间戳Timestamp(seconds=1560523991, nanoseconds=286000000)在 Flutter Firestore 快照中返回。
我想将其打印为格式正确的日期和时间。
我DateTime.now()在创建新记录并使用 Firestore 快照检索它时使用将当前 DateTime 存储在 Firestore 中,但我无法转换为格式化的日期时间。我正在使用 libintl.dart进行格式化。
保存数据的代码
d={'amount':amount,
'desc':desc,
'user_id':user_id,
'flie_ref':url.toString(),
'date':'${user_id}${DateTime.now().day}-${DateTime.now().month}-${DateTime.now().year}',
'timestamp':DateTime.now()
return Firestore.instance.collection('/data').add(d).then((v){return true;
}).catchError((onError)=>print(onError));
});
Accessing with
FutureBuilder(
future: Firestore.instance
.collection('data')
.where('user_id', isEqualTo:_user_id)
.getDocuments(),
builder: (BuildContext context,
AsyncSnapshot<QuerySnapshot> snapshot) {
if (!snapshot.hasData)
return Container(
child: Center(child: CircularProgressIndicator()));
return ListView.builder(
itemCount: snapshot.data.documents.length,
itemBuilder: (BuildContext context, int index) {
return Column(
children: <Widget>[
Text(DateFormat.yMMMd().add_jm().format(DateTime.parse(snapshot.data.documents[index].data['timestamp'].toString())]);
....
Run Code Online (Sandbox Code Playgroud)
抛出的错误是
日期格式无效。
我期待输出是: 'Jan 17, 2019, 2:19 PM'
说我有一个字符串
"1974-03-20 00:00:00.000"
Run Code Online (Sandbox Code Playgroud)
它是使用创建的DateTime.now(),如何将字符串转换回DateTime对象?
我需要DateTime在Dart的一个对象中解析这种日期"星期一,2014年8月11日下午12:53 PDT" .
该DateTime有一个静态方法parse接受ISO 8601格式的一个子集,而不是我的情况.
本DateFormat类允许您定义的日期模式解析.我创造了"EEE,dd MMM yyyy hh:mm a zzz"的模式.
使用它我得到了FormatException: Trying to read a from Mon, 11 Aug 2014 12:53 pm PDT at position 23.
看起来解析器不喜欢PM标记的情况(我打开了一个问题).
我试图解决整个字符串的问题.使用字符串全部大写我再次得到一个FormatException,因为工作日和大写的月份名称.
任何其他解决方案或解决方法?
我在我的应用程序中使用日期格式化程序来显示一些日期..但我希望这个日期以阿拉伯语显示..所以我尝试像这样更改格式化程序的语言环境:
var now = new DateTime.now();
var formatter = DateFormat.yMMMd("ar_SA");
String formatted = formatter.format(now);
print(formatted);
Run Code Online (Sandbox Code Playgroud)
但它不工作..
如果我把它改成这样:
var now = new DateTime.now();
var formatter = DateFormat.yMMMd("en_US");
String formatted = formatter.format(now);
print(formatted);
Run Code Online (Sandbox Code Playgroud)
会正常工作..但我希望日期以阿拉伯语显示..
如何实现这一目标?我希望日期是例如 ?? ????? ????.. 怎么做?
我想像这样格式化日期,2019-07-08T10:37:28Z但我不知道该怎么做,任何人都可以帮我解决这个问题。
这是日期选择器的代码
final format = new DateFormat.yMMMEd('en-US');
return DateTimeField(
format: format,
autocorrect: true,
autovalidate: false,
controller: _bspLicenseExpiryDate,
readOnly: true,
validator: (date) => date == null ? 'Please enter valid date' : null,
decoration: InputDecoration(
labelText: "Expiry Date",
hintText: "Expiry Date",
prefixIcon: Icon(
FontAwesomeIcons.calendar,
size: 24,
)),
onShowPicker: (context, currentValue) {
return showDatePicker(
context: context,
firstDate: DateTime.now(),
initialDate: currentValue ?? DateTime.now(),
lastDate: DateTime(2100),
);
},
);
Run Code Online (Sandbox Code Playgroud) 我在firebase中有时间戳项。我从 dart 代码时间戳类型获取项目。它显示为 'Timestamp(seconds=1590903768, nanoseconds=26999000)' 原样。
我想在我的申请中只显示“2020-06-01”或“06-01”之类的日期。
请给我建议。
我有一个 srting 日期 2019-09-30,我想在 dart 中将其转换为 30-09-2019
如何将以下 ISO8601 格式转换为月份和日期。
2022-08-29T10:33:49.283Z
Run Code Online (Sandbox Code Playgroud)
到
29/8
Run Code Online (Sandbox Code Playgroud)