35 lines
		
	
	
		
			896 B
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			35 lines
		
	
	
		
			896 B
		
	
	
	
		
			C++
		
	
	
	
	
	
| #include <QDateTime>
 | |
| #include <QString>
 | |
| #include "ParseUtils.h"
 | |
| #include <QDebug>
 | |
| #include <cstdlib>
 | |
| 
 | |
| QDateTime timeFromS3Time(QString str)
 | |
| {
 | |
|     return QDateTime::fromString(str, Qt::ISODate);
 | |
| }
 | |
| 
 | |
| QString timeToS3Time(QDateTime time)
 | |
| {
 | |
|     // this all because Qt can't format timestamps right.
 | |
|     int offsetRaw = time.offsetFromUtc();
 | |
|     bool negative = offsetRaw < 0;
 | |
|     int offsetAbs = std::abs(offsetRaw);
 | |
| 
 | |
|     int offsetSeconds = offsetAbs % 60;
 | |
|     offsetAbs -= offsetSeconds;
 | |
| 
 | |
|     int offsetMinutes = offsetAbs % 3600;
 | |
|     offsetAbs -= offsetMinutes;
 | |
|     offsetMinutes /= 60;
 | |
|     
 | |
|     int offsetHours = offsetAbs / 3600;
 | |
| 
 | |
|     QString raw = time.toString("yyyy-MM-ddTHH:mm:ss");
 | |
|     raw += (negative ? QChar('-') : QChar('+'));
 | |
|     raw += QString("%1").arg(offsetHours, 2, 10, QChar('0'));
 | |
|     raw += ":";
 | |
|     raw += QString("%1").arg(offsetMinutes, 2, 10, QChar('0'));
 | |
|     return raw;
 | |
| }
 |