mirror of
https://github.com/RetroPie/EmulationStation.git
synced 2024-05-31 18:47:42 -04:00
TimeUtil: use strftime
for date/time formatting.
The change extends the DateTime formatting options and simplifies a bit the code.
This commit is contained in:
parent
b513c19c5b
commit
1df4bbfc8e
|
@ -832,13 +832,18 @@ EmulationStation borrows the concept of "nine patches" from Android (or "9-Slice
|
||||||
* `zIndex` - type: FLOAT.
|
* `zIndex` - type: FLOAT.
|
||||||
- z-index value for component. Components will be rendered in order of z-index value from low to high.
|
- z-index value for component. Components will be rendered in order of z-index value from low to high.
|
||||||
* `displayRelative` - type: BOOLEAN. Renders the datetime as a a relative string (ex: 'x days ago')
|
* `displayRelative` - type: BOOLEAN. Renders the datetime as a a relative string (ex: 'x days ago')
|
||||||
* `format` - type: STRING. Specifies format for rendering datetime.
|
* `format` - type: STRING. Specifies format for rendering datetime, according to the `strftime` conversion format (see https://man7.org/linux/man-pages/man3/strftime.3.html).
|
||||||
|
Common formating placeholders(see the link above for all available sequences):
|
||||||
- %Y: The year, including the century (1900)
|
- %Y: The year, including the century (1900)
|
||||||
|
- %y: The year as a decimal number without a century
|
||||||
- %m: The month number [01,12]
|
- %m: The month number [01,12]
|
||||||
- %d: The day of the month [01,31]
|
- %d: The day of the month [01,31]
|
||||||
- %H: The hour (24-hour clock) [00,23]
|
- %H: The hour (24-hour clock) [00,23]
|
||||||
- %M: The minute [00,59]
|
- %M: The minute [00,59]
|
||||||
- %S: The second [00,59]
|
- %S: The second [00,59]
|
||||||
|
- %R: The time in 24-hour notation
|
||||||
|
- %B: The full month name
|
||||||
|
- %b: Abbreviated month name
|
||||||
|
|
||||||
#### sound
|
#### sound
|
||||||
|
|
||||||
|
|
|
@ -219,73 +219,16 @@ namespace Utils
|
||||||
const char* f = _format.c_str();
|
const char* f = _format.c_str();
|
||||||
const tm timeStruct = *localtime(&_time);
|
const tm timeStruct = *localtime(&_time);
|
||||||
char buf[256] = { '\0' };
|
char buf[256] = { '\0' };
|
||||||
char* s = buf;
|
const int MAX_LENGTH = 256;
|
||||||
|
|
||||||
while(*f)
|
// Use strftime to format the string
|
||||||
{
|
if (!strftime(buf, MAX_LENGTH, _format.c_str(), &timeStruct)) {
|
||||||
if(*f == '%')
|
return "";
|
||||||
{
|
}
|
||||||
++f;
|
else
|
||||||
|
{
|
||||||
switch(*f++)
|
return std::string(buf);
|
||||||
{
|
|
||||||
case 'Y': // The year, including the century (1900)
|
|
||||||
{
|
|
||||||
const int year = timeStruct.tm_year + 1900;
|
|
||||||
*s++ = (char)((year - (year % 1000)) / 1000) + '0';
|
|
||||||
*s++ = (char)(((year % 1000) - (year % 100)) / 100) + '0';
|
|
||||||
*s++ = (char)(((year % 100) - (year % 10)) / 10) + '0';
|
|
||||||
*s++ = (char)(year % 10) + '0';
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
|
|
||||||
case 'm': // The month number [00,11]
|
|
||||||
{
|
|
||||||
const int mon = timeStruct.tm_mon + 1;
|
|
||||||
*s++ = (char)(mon / 10) + '0';
|
|
||||||
*s++ = (char)(mon % 10) + '0';
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
|
|
||||||
case 'd': // The day of the month [01,31]
|
|
||||||
{
|
|
||||||
*s++ = (char)(timeStruct.tm_mday / 10) + '0';
|
|
||||||
*s++ = (char)(timeStruct.tm_mday % 10) + '0';
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
|
|
||||||
case 'H': // The hour (24-hour clock) [00,23]
|
|
||||||
{
|
|
||||||
*s++ = (char)(timeStruct.tm_hour / 10) + '0';
|
|
||||||
*s++ = (char)(timeStruct.tm_hour % 10) + '0';
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
|
|
||||||
case 'M': // The minute [00,59]
|
|
||||||
{
|
|
||||||
*s++ = (char)(timeStruct.tm_min / 10) + '0';
|
|
||||||
*s++ = (char)(timeStruct.tm_min % 10) + '0';
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
|
|
||||||
case 'S': // The second [00,59]
|
|
||||||
{
|
|
||||||
*s++ = (char)(timeStruct.tm_sec / 10) + '0';
|
|
||||||
*s++ = (char)(timeStruct.tm_sec % 10) + '0';
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
*s++ = *f++;
|
|
||||||
}
|
|
||||||
|
|
||||||
*s = '\0';
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return std::string(buf);
|
|
||||||
|
|
||||||
} // timeToString
|
} // timeToString
|
||||||
|
|
||||||
//////////////////////////////////////////////////////////////////////////
|
//////////////////////////////////////////////////////////////////////////
|
||||||
|
|
Loading…
Reference in a new issue