53 lines
1.6 KiB
C++
53 lines
1.6 KiB
C++
|
|
#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);
|
||
|
|
|
||
|
|
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;
|
||
|
|
}
|
||
|
|
}
|