0

「2012-10-28」の形式の文字列で表された日付があり、「28/10/2012」の文字列形式に変換したいと思います。これは、事前定義された関数を使用するC ++ MS Visual Studioで可能ですか?

4

5 に答える 5

3

これはそれを行います:

#include <cstdio>
#include <iostream>
#include <string>
using namespace std;

string format_date(string s)
{
    char buf[11];
    int a, b, c;
    sscanf(s.c_str(), "%d-%d-%d", &a, &b, &c);
    sprintf(buf, "%02d/%02d/%d", c, b, a);
    return buf;
}

int main()
{
    cout << format_date("2012-09-28") << endl;
}
于 2013-03-06T15:26:59.820 に答える
2

私はそれをそのように解決しました:

 Use sscan_f to break date into year, month and day.
 Create struct tm with the data above.
 Use strftime to convert from tm to string with the desired format.
于 2013-03-06T13:44:06.273 に答える
1

COleDateTime::ParseDateTimeをご覧ください。

COleDateTimeを使用したくない場合、ParseDateTimeの実装はVarDateFromStrの単なる薄いラッパーです

于 2013-03-06T13:10:59.083 に答える
0

残念ながら、 strptimeはWindowsには存在しません。ここで助けを求めてください:Windowsで同等のstrptime()?

次に、 strftimeを使用して日付を書き込むことができます。

于 2013-03-06T12:59:02.063 に答える
0

Qtでは(一部の組み込みシステムはまだ新しいタイマークラスをサポートしていないので、ここにあります)ここでは、巨大なジャンボをあまり使わずに文字列を変換する方法を説明します。とにかく、タイマークラスにはエポック機能があります。


QString fromSecsSinceEpoch(qint64 epoch)
{
    QTextStream ts;
    time_t result = epoch;//std::time(NULL);
    //std::cout << std::asctime(std::localtime(&result))
    //            << result << " seconds since the Epoch\n";
    ts << asctime(gmtime(&result));
    return ts.readAll();
}
qint64 toSecsSinceEpoch(QString sDate)//Mon Nov 25 00:45:23 2013
{
    QHash <QString,int> monthNames;
    monthNames.insert("Jan",0);
    monthNames.insert("Feb",1);
    monthNames.insert("Mar",2);
    monthNames.insert("Apr",3);
    monthNames.insert("May",4);
    monthNames.insert("Jun",5);
    monthNames.insert("Jul",6);
    monthNames.insert("Aug",7);
    monthNames.insert("Sep",8);
    monthNames.insert("Oct",9);
    monthNames.insert("Nov",10);
    monthNames.insert("Dec",11);


    QStringList l_date = sDate.split(" ");
    if (l_date.count() != 5)
    {
        return 0;//has to be 5 cuz Mon Nov 25 00:45:23 2013
    }
    QStringList l_time = l_date[3].split(":");
    if (l_time.count() != 3)
    {
        return 0;//has to be 3 cuz 00:45:23
    }

    struct tm result;
    result.tm_mday=l_date[2].toInt();
    result.tm_mon=monthNames[l_date[1]];
    result.tm_year=l_date[4].toInt()-1900;;

    result.tm_hour=l_time[0].toInt();
    result.tm_min=l_time[1].toInt();
    result.tm_sec=l_time[2].toInt();
    time_t timeEpoch=mktime(&result);
    qDebug()<<"epochhhh :"<<timeEpoch;
    return timeEpoch;
}
于 2013-12-11T19:24:05.760 に答える