【问题标题】:flutter how display time and dateflutter 如何显示时间和日期
【发布时间】:2021-08-04 13:52:19
【问题描述】:

我从服务器的 API 获取时间和日期作为字符串:

"dateOBDCommand": "2021-07-13T13:15:54.000000Z"

我只想向用户显示:

2021-07-13  13:15:54

我的代码:

return Card(

      child: Column(
          mainAxisSize: MainAxisSize.min,
          children: <Widget>[
              ListTile(
                  title: Container(
                      height: 30,
                      child: Text("${obd.description}")),
                  subtitle: Text("${obd.dateOBDCommand}"),
                  trailing: Text("${obd.value}"),
              )

我该怎么做??

【问题讨论】:

  • 嘿@lucky 你用哪个插件在flutter中列出obd数据?

标签: flutter dart


【解决方案1】:

使用 DateTime 和 DateFormat 类,可以如下实现。

import 'package:flutter/material.dart';
import 'package:intl/intl.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
        visualDensity: VisualDensity.adaptivePlatformDensity,
      ),
      home: MyHomePage(title: 'Flutter Demo Home Page'),
    );
  }
}

class MyHomePage extends StatefulWidget {
  MyHomePage({Key key, this.title}) : super(key: key);

  final String title;

  @override
  _MyHomePageState createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  @override
  void initState() {
    super.initState();
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text(widget.title),
      ),
      body: _buildBody(),
      floatingActionButton: FloatingActionButton(
        onPressed: () {},
        tooltip: 'Increment',
        child: Icon(Icons.add),
      ),
    );
  }

  Widget _buildBody() {
    String dateOBDCommand = '2021-07-13T13:15:54.000000Z';
    DateTime date = DateTime.parse(dateOBDCommand);
    String result = DateFormat('yyyy-MM-dd H:m:s').format(date);

    return Column(
      crossAxisAlignment: CrossAxisAlignment.stretch,
      children: [
        Text(
          'before : ' + dateOBDCommand,
        ),
        Text(
          'after : ' + result.toString(),
        ),
      ],
    );
  }
}

【讨论】:

    【解决方案2】:

    您需要先将字符串日期解析为 DateTime 对象,然后根据您的格式化程序对其进行格式化。这是文档链接

    https://api.flutter.dev/flutter/intl/DateFormat-class.html

    【讨论】:

      【解决方案3】:

      您应该使用 intl 包中的 DateTimeDateFormat

      例如:

      import 'package:intl/intl.dart';
      
      ...
      
      String dateString = "2021-07-13T13:15:54.000000Z";
      final date = DateTime.parse(dateString);
      final format = DateFormat('yyyy-MM-dd H:m:s');
      print(format.format(date));
      
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2022-01-03
        • 2019-04-24
        • 2013-07-13
        • 1970-01-01
        • 2016-07-29
        • 2012-11-27
        • 2018-01-14
        相关资源
        最近更新 更多