DateUtils.cpp 883 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. #include "StdInc.h"
  2. #include <vstd/DateUtils.h>
  3. #if defined(VCMI_ANDROID)
  4. #include "../CAndroidVMHelper.h"
  5. #endif
  6. VCMI_LIB_NAMESPACE_BEGIN
  7. namespace vstd
  8. {
  9. DLL_LINKAGE std::string getFormattedDateTime(std::time_t dt)
  10. {
  11. #if defined(VCMI_ANDROID)
  12. CAndroidVMHelper vmHelper;
  13. return vmHelper.callStaticStringMethod(CAndroidVMHelper::NATIVE_METHODS_DEFAULT_CLASS, "getFormattedDateTime");
  14. #endif
  15. std::tm tm = *std::localtime(&dt);
  16. std::stringstream s;
  17. try
  18. {
  19. s.imbue(std::locale(""));
  20. }
  21. catch(const std::runtime_error & e)
  22. {
  23. // locale not be available - keep default / global
  24. }
  25. s << std::put_time(&tm, "%x %X");
  26. return s.str();
  27. }
  28. DLL_LINKAGE std::string getDateTimeISO8601Basic(std::time_t dt)
  29. {
  30. std::tm tm = *std::localtime(&dt);
  31. std::stringstream s;
  32. s << std::put_time(&tm, "%Y%m%dT%H%M%S");
  33. return s.str();
  34. }
  35. }
  36. VCMI_LIB_NAMESPACE_END