0

I need to convert the user inputted time to milli seconds Since Epoch (millisecondsSinceEpoch). I was looking for a solution for this but I could found only millisecondsSinceEpoch to regular time. So here is my code. I tried to do this in this way. Anyone can help, I really appreciate it.

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,
                ),
              ),
              Container(
                padding: EdgeInsets.all(5.0),
                decoration: BoxDecoration(
                    border: Border(
                      // bottom: BorderSide(color: Colors.grey[100])
                    )),
                child: DateTimeField(
                  decoration: InputDecoration(
                    border: OutlineInputBorder(),
                    labelText: 'End Time',
                    labelStyle: TextStyle(color: Colors.black),
                  ),
                  style: TextStyle(
                    color: Colors.black,
                  ),

                  controller: _endTimeController,
                  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,
                ),
              ),
              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;

  }


}

Thanks in advance

Mukta
  • 1,357
  • 1
  • 15
  • 17

1 Answers1

0

Here I got the result.

Change the time date format final format = 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');
}
Mukta
  • 1,357
  • 1
  • 15
  • 17
  • your code will work but you will get the wrong value from var endTime = mili2.toInt(); Because you have to parse into double value when you will try to parse it to int, digits will crop as int can hold. so parse it to double. – Niaj Mahmud Oct 31 '22 at 11:30