我得到了一个structtm,我想将其转换为具有以下特定输出的字符串:
年月日时分
其中除月份(mm)以外的所有内容都是数字,例如:
2010年10月14日10:35
这是我当前的代码:
struct stat sb;
if (lstat(path, &sb) == 0) {
struct tm *pmytm = gmtime(&sb.st_mtime);
sprintf(array[index]->mtime, "%d-%d-%d %d:%d", pmytm->tm_mday, pmytm->tm_mon, 1900 + pmytm->tm_year, pmytm->tm_hour, pmytm->tm_min);
问题是我不知道如何转移这个pmytm->;tm_mon高效地进入本月。你建议我构建一个月的数组,然后索引到该数组中(在我的sprintf中用%s替换%d),还是有更好的解决方案?
此外,我对时间和分钟有意见。如果低于10(2个数字),则只显示一个数字,例如:10:8而不是10:08。我该怎么修?
非常感谢您的帮助,
编辑:我心目中的解决方案(这很优雅吗?):
static char *months[] = { "", "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec" };
struct stat sb;
if (lstat(path, &sb) == 0) {
struct tm *pmytm = gmtime(&sb.st_mtime);
sprintf(array[index]->mtime, "%02d-%s-%d %02d:%02d", pmytm->tm_mday, months[pmytm->tm_mon], 1900 + pmytm->tm_year, pmytm->tm_hour, pmytm->tm_min);
贾里