flutter 将日期格式化为本地“de_DE”失败

ojsjcaue  于 2023-02-13  发布在  Flutter
关注(0)|答案(1)|浏览(164)

我遇到了一个问题,格式化日期的日视图在德国的格式。它总是显示在yyyy-MM-dd,但我想你使用的格式是dd. MM. yyyy。我尝试了一些事情,但没有工作,我想。起初我的日期格式如下

String datumDesTages = DateFormat.yMd('de_DE').format(DateTime.now());

这个方法很好用,所以date显示为dd. MM. yyyy。2但是对于DayTime,我需要一个DateTime,所以我试着像下面这样解析它:

DateTime datumDesTagesDateTime =
        Intl.withLocale('de', () => DateFormat().parse(datumDesTages));

但我得到了错误

The following FormatException was thrown building EventSet(dirty, state: _EventSetState#95b2d):
Trying to read .  from 12.2.2023 at position 4

整个代码是:

lass _EventSetState extends State<EventSet> {
  @override
  Widget build(BuildContext context) {
    String datumDesTages = DateFormat.yMd('de_DE').format(DateTime.now());
    //String datumDesTagesString = datumDesTages.format(DateTime.now());
    DateTime datumDesTagesDateTime =
        Intl.withLocale('de', () => DateFormat().parse(datumDesTages));
    //DateFormat('d.M.y').parse(datumDesTagesString));
    return Scaffold(
      appBar: AppBar(
        title: Text('Termin setzen'),
      ),
      body: Padding(
        padding: const EdgeInsets.all(8.0),
        child: Column(
          children: [
            Expanded(
              child: Container(
                child: DayView(
                  date: datumDesTagesDateTime,
                  style: DayViewStyle.fromDate(
                    date: datumDesTagesDateTime,
                    headerSize: 20,
                  ),
                ),
              ),
            ),

            // EventDetailScreen(),
          ],
        ),
      ),
      floatingActionButton: FloatingActionButton(
        child: Icon(
          Icons.add,
          color: Colors.blue,
        ),
        backgroundColor: Colors.red[50],
        onPressed: () {
          Navigator.of(context).pushNamed(EventDetailScreen.routeName);
        },
      ),
    );
  }
}

我不知道如何解决这个问题,谢谢你的帮助。
向帕特里克问好

qni6mghb

qni6mghb1#

您需要首先加载适合您的语言的数据。
查看https://pub.dev/packages/intl的自述文件
请注意,在为特定区域设置执行任何DateTime格式设置之前,必须通过调用加载适当的数据。

import 'package:intl/date_symbol_data_local.dart';
...
initializeDateFormatting('de_DE', null).then(formatDates);

相关问题