2025-06-25 10:40:42 +00:00
|
|
|
#include "../include/distime.h"
|
|
|
|
|
|
|
|
|
|
#include <algorithm>
|
|
|
|
|
#include <iomanip>
|
|
|
|
|
#include <iostream>
|
|
|
|
|
|
|
|
|
|
namespace distime {
|
|
|
|
|
void parseTimeInput(std::tm &resultTime, const std::tm ¤tTime) {
|
|
|
|
|
std::string timeInput{};
|
|
|
|
|
bool continueLoop{true};
|
|
|
|
|
while (continueLoop) {
|
|
|
|
|
// Unique formatting of 'cout' should make the output easier to predict
|
|
|
|
|
std::cout
|
|
|
|
|
//blank
|
|
|
|
|
<< "\nCurrent time: " << std::put_time(¤tTime, "%d-%m-%Y %H:%M\n")
|
|
|
|
|
//blank
|
|
|
|
|
<< "Day (dd) Month (mm) Year(yyyy) 24 Hour (HH) Minute (MM)\n"
|
|
|
|
|
<< ">: ";
|
|
|
|
|
|
|
|
|
|
std::getline(std::cin, timeInput);
|
|
|
|
|
|
2025-06-27 08:20:24 +00:00
|
|
|
if (std::ranges::any_of(timeInput.cbegin(), timeInput.cend(), [] (char input) {return !isdigit(input) && !isspace(input);})) {
|
|
|
|
|
std::cout << "Cannot contain non-numbers";
|
|
|
|
|
continue;
|
|
|
|
|
}
|
|
|
|
|
|
2025-06-25 10:40:42 +00:00
|
|
|
int spaceCheck = static_cast<int>(std::ranges::count(timeInput.cbegin(), timeInput.cend(), ' '));
|
|
|
|
|
|
|
|
|
|
if (spaceCheck != 4) {
|
|
|
|
|
if (spaceCheck < 4)
|
|
|
|
|
std::cout << "Too few spaces\n";
|
|
|
|
|
else if (spaceCheck > 4)
|
|
|
|
|
std::cout << "Too many spaces\n";
|
|
|
|
|
std::cout << "Example of a working input: '25 02 2015 06 00' \n";
|
|
|
|
|
std::cout << "Press enter to continue...";
|
|
|
|
|
std::cin.get();
|
|
|
|
|
continue;
|
|
|
|
|
}
|
|
|
|
|
continueLoop = false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
std::istringstream timeStream {timeInput};
|
|
|
|
|
|
|
|
|
|
int day, month, year, hour, minute;
|
|
|
|
|
|
|
|
|
|
timeStream >> day >> month >> year >> hour >> minute;
|
|
|
|
|
|
|
|
|
|
// Assign the values to resultTime
|
|
|
|
|
resultTime.tm_mday = day;
|
|
|
|
|
resultTime.tm_mon = month - 1;
|
|
|
|
|
resultTime.tm_year = year - 1900;
|
|
|
|
|
resultTime.tm_hour = hour;
|
|
|
|
|
resultTime.tm_min = minute;
|
|
|
|
|
resultTime.tm_sec = 0;
|
|
|
|
|
}
|
|
|
|
|
}
|