问题描述
我需要将用户输入的时间转换为自大纪元以来的毫秒数(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');
}