この特定の種類のことは何度も答えられていることを私は知っていますが、ここでの私の質問は、ctime()
日付/時刻の変換よりも一般的なC++のものに関係していると思います。たまたまこれで試してみました。だから、ここにコードがあります:
#include <iostream>
#include <ctime>
using std::cout;
using std::endl;
using std::string;
void strTime( int iM, int iD, int iY )
{
time_t rwTime;
time( &rwTime ); // current epoch time
// 1st set:: using tmInfo_11
struct tm *tmInfo_11;
tmInfo_11 = localtime( &rwTime );
tmInfo_11->tm_mon = iM - 1;
tmInfo_11->tm_mday = iD;
tmInfo_11->tm_year = iY - 1900;
mktime( tmInfo_11 );
cout << "tmInfo_11 RESULt: " << tmInfo_11->tm_wday << endl;
// 2nd set:: using tmInfo_22 //
struct tm tmInfo_22;
tmInfo_22 = *localtime( &rwTime );
tmInfo_22.tm_mon = iM - 1;
tmInfo_22.tm_mday = iD;
tmInfo_22.tm_year = iY - 1900;
mktime( &tmInfo_22 );
cout << "tmInfo_22 RESULt: " << tmInfo_22.tm_wday << endl;
}
int main()
{
int iMM=12, iDD=9, iYY=2009;
strTime( iMM, iDD, iYY );
}
そして私の質問は:これらの2つのコードセットの違いは何ですか?いずれにせよ、私は同じことを達成することができます。顕著な違いは、各セットの最初の2行であり、すべてを理解していなかったことを認めなければなりません。それで、誰かが親切にそれを私に説明してもらえますか?また、用量1には、他の用量よりも長所/短所がありますか?乾杯!!
完全を期すために、これは私が最終的に作成したコードであり、望ましい結果が得られます。したがって、基本的には将来の参照用です。
#include <iostream>
#include <fstream>
#include <ctime>
using std::cout;
using std::endl;
using std::string;
tm testTime( int iM, int iD, int iY );
int main()
{
char tmBuff[20];
int iMM=12, iDD=9, iYY=2009;
tm myDate = testTime( iMM, iDD, iYY );
strftime( tmBuff, sizeof(tmBuff), "%a, %b %d, %Y", &myDate );
cout << "TESt PRINt TIMe: " << tmBuff << endl;
}
tm testTime( int iM, int iD, int iY )
{
time_t rwTime;
struct tm tmTime;
tmTime = *localtime( &rwTime );
tmTime.tm_mon = iM - 1;
tmTime.tm_mday = iD;
tmTime.tm_year = iY - 1900;
mktime( &tmTime );
return tmTime;
}
を指定する必要があることに注意*localtime( &rwTime )
してください(後でtmTimeが上書きされますが)。そうしないと、のYear(%Y)がstrftime()
機能しません。助けてくれてありがとう。乾杯!!