Skip to content

Instantly share code, notes, and snippets.

@isaccavalcante
Last active February 19, 2019 16:50
Show Gist options
  • Save isaccavalcante/3613ceeee4d85bb2bac7b1deba7ea8e3 to your computer and use it in GitHub Desktop.
Save isaccavalcante/3613ceeee4d85bb2bac7b1deba7ea8e3 to your computer and use it in GitHub Desktop.
void main() {
String arrived = "07:45";
String lunched = "11:40";
String returned = "12:09";
String leave_time = getLeaveTime(arrived, lunched, returned);
print("-------\n->$arrived\n->$lunched\n->$returned\n->$leave_time");
}
DateTime parseDate(time){
var today = DateTime.now().toString();
String parsed_date = today.substring(0, 11) + time + ":00.000Z";
return DateTime.parse(parsed_date);
}
String getLeaveTime(String arrived, String lunched, String returned){
int daily_needed_minutes = 480; // 8 hours;
var min_arrival_date = parseDate("07:30");
var arrived_date = parseDate(arrived);
var returned_date = parseDate(returned);
var lunched_date = parseDate(lunched);
if (arrived_date.isBefore(min_arrival_date)){ // prevents arrival before 07:30
arrived = "07:30";
}
var lunch_time = returned_date.difference(lunched_date);
if (lunch_time.inMinutes < 30){ // prevents lunch time less than half hour
returned_date = lunched_date.add(Duration(minutes: 30));
}
var morning_minutes = lunched_date.difference(arrived_date).inMinutes; // minutes worked in the morning
var needed_minutes = daily_needed_minutes - morning_minutes;
var leave = returned_date.add(Duration(minutes: needed_minutes));
String leave_time = "${leave.hour.toString().padLeft(2,'0')}:${leave.minute.toString().padLeft(2,'0')}";
return leave_time;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment