fork download
  1. #include <iostream>
  2. #include <sstream>
  3. #include <string>
  4. #include <iomanip>
  5.  
  6. int main() {
  7.  
  8. constexpr size_t max_line_chars = 30;
  9.  
  10. std::ios_base::sync_with_stdio(false);
  11. std::cin.tie(nullptr);
  12.  
  13. std::string line;
  14. line.reserve(max_line_chars);
  15.  
  16. while (std::getline(std::cin, line))
  17. {
  18. std::tm tm_sunrise_date = {};
  19. std::tm tm_sunset_date = {};
  20.  
  21. std::stringstream ss(line);
  22. std::stringstream ss_sunrise_time, ss_sunset_time;
  23.  
  24. std::string month, day, year, sunrise_str, sunset_str;
  25. ss >> month >> day >> year >> sunrise_str >> sunset_str;
  26.  
  27. ss_sunrise_time << month << ' ' << day << ' ' << year << ' ' << sunrise_str;
  28. ss_sunset_time << month << ' ' << day << ' ' << year << ' ' << sunset_str;
  29.  
  30. std::cout << ss_sunrise_time.str() << "\n";
  31. std::cout << ss_sunset_time.str() << "\n";
  32.  
  33. ss.imbue(std::locale("en_US.UTF-8"));
  34. ss_sunrise_time >> std::get_time(&tm_sunrise_date, "%b %d %Y %H:%M");
  35. ss_sunset_time >> std::get_time(&tm_sunset_date, "%b %d %Y %H:%M");
  36.  
  37. // std::cout << tm_sunrise_date.tm_year << "\n";
  38. // std::cout << tm_sunrise_date.tm_mon << "\n";
  39. // std::cout << tm_sunrise_date.tm_mday << "\n";
  40. // std::cout << tm_sunrise_date.tm_hour << "\n";
  41. // std::cout << tm_sunrise_date.tm_min << "\n";
  42.  
  43. time_t sunrise_time = std::mktime(&tm_sunrise_date);
  44. time_t sunset_time = std::mktime(&tm_sunset_date);
  45.  
  46. //std::cout << (long long) sunrise_time << "\n";
  47. //std::cout << (long long) sunset_time << "\n";
  48.  
  49. unsigned int sunrise_to_sunset = std::difftime(sunset_time, sunrise_time);
  50.  
  51. //std::cout << (long long) sunrise_to_sunset << "\n";
  52.  
  53. std::cout << month << ' ' << day << ' ' << year << ' ';
  54. std::cout << sunrise_to_sunset / 3600 << " hours " << (sunrise_to_sunset % 3600) / 60 << " minutes\n";
  55. }
  56.  
  57. return 0;
  58. }
Success #stdin #stdout 0s 17056KB
stdin
June 22 2005 6:24 20:37
December 22 2005 7:24 17:30
November 2 2005 6:45 17:38
January 8 1992 7:45 18:46
stdout
June 22 2005 6:24
June 22 2005 20:37
June 22 2005 0 hours 0 minutes
December 22 2005 7:24
December 22 2005 17:30
December 22 2005 0 hours 0 minutes
November 2 2005 6:45
November 2 2005 17:38
November 2 2005 0 hours 0 minutes
January 8 1992 7:45
January 8 1992 18:46
January 8 1992 0 hours 0 minutes