DateParameterMapper.cpp 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. /*
  2. * Author: Patrick-Christopher Mattulat
  3. * Co-Author: Claude Sonnet 4.6 (LLM)
  4. * Company: Lynar Studios
  5. * E-Mail: webmaster@lynarstudios.com
  6. * Created: 2023-03-31
  7. * Changed: 2026-06-23
  8. *
  9. * */
  10. #if defined(unix) || defined(__APPLE__)
  11. #include <ctime>
  12. #endif
  13. #include <ls-std/time/common/DateParameterMapper.hpp>
  14. using ls::standard::time::DateParameter;
  15. using ls::standard::time::DateParameterMapper;
  16. using ls::standard::time::type::UnixTimestamp;
  17. DateParameterMapper::DateParameterMapper() = default;
  18. DateParameterMapper::~DateParameterMapper() = default;
  19. #if defined(unix) || defined(__APPLE__)
  20. UnixTimestamp DateParameterMapper::toUnixTimestamp(const DateParameter &_dateParameter)
  21. {
  22. time_t rawTime{};
  23. ::time(&rawTime);
  24. struct tm timeInfo
  25. {
  26. };
  27. localtime_r(&rawTime, &timeInfo);
  28. timeInfo.tm_year = _dateParameter.getYear() - 1900;
  29. timeInfo.tm_mon = _dateParameter.getMonth() - 1;
  30. timeInfo.tm_mday = _dateParameter.getDay();
  31. timeInfo.tm_hour = _dateParameter.getHour();
  32. timeInfo.tm_min = _dateParameter.getMinute();
  33. timeInfo.tm_sec = _dateParameter.getSecond();
  34. timeInfo.tm_isdst = -1;
  35. return static_cast<UnixTimestamp>(mktime(&timeInfo));
  36. }
  37. #endif
  38. #ifdef _WIN32
  39. SYSTEMTIME DateParameterMapper::toWindowsSystemTime(const DateParameter &_dateParameter)
  40. {
  41. SYSTEMTIME systemTime{};
  42. systemTime.wYear = _dateParameter.getYear();
  43. systemTime.wMonth = _dateParameter.getMonth();
  44. systemTime.wDayOfWeek = 0;
  45. systemTime.wDay = _dateParameter.getDay();
  46. systemTime.wHour = _dateParameter.getHour();
  47. systemTime.wMinute = _dateParameter.getMinute();
  48. systemTime.wSecond = _dateParameter.getSecond();
  49. systemTime.wMilliseconds = 0;
  50. return systemTime;
  51. }
  52. #endif