在Flutter中使用DateTimeField将DateTime转换为毫秒SinceEpoch

问题描述

我需要将用户输入的时间转换为自大纪元以来的毫秒数(millisecondsSinceEpoch)。我一直在寻找解决方案,但只能找到正常时间的毫秒级SinceEpoch。这是我的代码。我试图以这种方式做到这一点。任何人都可以提供帮助,我真的很感激。

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

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

class MyApp extends StatefulWidget {
  // This widget is the root of your application.
  _timeDateConvertToMili createState() => _timeDateConvertToMili();
}

class _timeDateConvertToMili extends State<MyApp>{

  final format = DateFormat("dd-MM-yyyy HH:mm");
  final initialValue = DateTime.now();

  bool autoValidate = false;
  bool showResetIcon = true;
  DateTime value = DateTime.now();


  TextEditingController _startTimeController = TextEditingController();
  TextEditingController _endTimeController = TextEditingController();

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      debugShowCheckedModeBanner: false,home: Scaffold(
        body: Container(
          child: Column(
            children: [
              SizedBox(height: 50,),Container(
                padding: EdgeInsets.all(5.0),decoration: BoxDecoration(
                    border: Border(
                      // bottom: BorderSide(color: Colors.grey[100])
                    )),child: DateTimeField(
                  decoration: InputDecoration(
                    border: OutlineInputBorder(),labelText: 'Start Time',labelStyle: TextStyle(color: Colors.black),style: TextStyle(
                    color: Colors.black,controller: _startTimeController,format: format,onShowPicker: (context,currentValue) async {
                    final date = await showDatePicker(
                        context: context,firstDate: DateTime(2000),initialDate: currentValue ?? DateTime.now(),lastDate: DateTime(2100));
                    if (date != null) {
                      final time = await showTimePicker(
                        context: context,initialTime:
                        TimeOfDay.fromDateTime(currentValue ?? DateTime.now()),);
                      return DateTimeField.combine(date,time);
                    } else {
                      return currentValue;
                    }
                  },resetIcon: showResetIcon ? Icon(Icons.delete) : null,labelText: 'End Time',controller: _endTimeController,Container(
                child: RaisedButton(
                  onPressed: () { 
                    convertNow();
                  },child: Text('Convert to Epoch'),Container(
                child: Text('Result is :'

                ),],);
  }

  void convertNow() {
    print ('inputted time is : $_startTimeController');
    //var unix = DateTime.parse(_startTimeController.toString()).millisecondsSinceEpoch / 1000;

  }


}

预先感谢

解决方法

我在这里得到结果。

更改时间日期格式的最终​​格式= DateFormat(“ yyyy-MM-dd HH:mm”);

void convertNow() {    
    var inputedStartTime = DateTime.parse(startTimeController.text);
    var mili = inputedStartTime.millisecondsSinceEpoch/1000;
    var startTime = mili.toInt();

    var inputedEndtTime = DateTime.parse(endTimeController.text);
    var mili2 = inputedEndtTime.millisecondsSinceEpoch/1000;
    var endTime = mili2.toInt();
    <!--Result see on run / terminal-->
    print ('Converted start time is $startTime');
    print ('Converted end time is $endTime');
}

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...