トップページ > 記事閲覧
日付の計算
名前:BayLeaf 日時: 2018/06/03 16:34

いつもお世話になっております。 「あと○日」のようなプログラムを組みたいのですが、 日付(できれば時間単位でもできたら良いです)の計算をどのように行うか方法が分かりません。 月をまたがない場合は単純に日にちを引けば良いのですが…。 方法がありましたらご教授ください。 現時点で毎日のログインボーナスなどは単純な大小の比較で出すことができています。
メンテ

Page: 1 |

Re: 日付の計算 ( No.1 )
名前:Oomimi 日時:2018/06/03 18:54

私の場合だとこんな感じに書いてます。 #include "DxLib.h" #include "time.h" int Login() { //前回ログインした時間(これはセーブデータから読み込む) int year = 2015; int mon = 4; int mday = 3; time_t past_time = (time_t)1428018822; //変数宣言 time_t now_time; struct tm t; //現在時刻の取得 time(&now_time); //現在時刻を構造体に変換 localtime_s(&t, &now_time); //前回ログインが未来の年月の時の処理 if (now_time < past_time) { printfDx("前回のログインデータが不正です。"); return -1; } //今日のログインを判定する if (year == t.tm_year + 1900 && mon == t.tm_mon + 1 && mday == t.tm_mday) { printfDx("今日はもうログインしてるよ。"); } else { printfDx("今日は初回ログインだね!\n"); printfDx("前回ログインから%d日経過\n", (now_time - past_time) / 86400); printfDx("前回ログイン:%d年%d月%d日\n", year, mon, mday); printfDx("今回ログイン:%d年%d月%d日\n", t.tm_year + 1900, t.tm_mon + 1, t.tm_mday); //ログインデータを保存 year = t.tm_year + 1900; mon = t.tm_mon; mday = t.tm_mday; past_time = past_time; } return 0; } int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) { ChangeWindowMode(TRUE); SetBackgroundColor(255, 255, 255); if (DxLib_Init() == -1) return -1; Login(); WaitKey(); DxLib_End(); return 0; }
メンテ
Re: 日付の計算 ( No.2 )
名前:BayLeaf 日時:2018/06/04 00:33

> Oomimiさん ありがとうございます。 過去と現在の日付は取得できているので、 past_time に "未来の日付情報" を入れればできそうですね。 上記情報に入れる値が事前に分かれば良いのですが…。 例えば、引数に特定の日付と時間を入れて戻り値を past_time に代入するような 都合の良い関数があったらと思うのですがありますでしょうか?
メンテ
Re: 日付の計算 ( No.3 )
名前:yumetodo 日時:2018/06/04 09:29

こんなのC++20が来れば一発で解決なんだけどなぁ・・・ C++標準ライブラリのカレンダー(Calendar) - yohhoyの日記 ttp://d.hatena.ne.jp/yohhoy/20180322/p1 ・・・と思ったら、提案文章から参照実装が拾えた。 ttps://github.com/HowardHinnant/date これを使うという手。次世代C++標準規格とほぼ同じ使い勝手のはず。
メンテ
Re: 日付の計算 ( No.4 )
名前:管理人 日時:2018/06/05 01:31

> 例えば、引数に特定の日付と時間を入れて戻り値を past_time に代入するような > 都合の良い関数があったらと思うのですがありますでしょうか? 試せていませんが以下の関数がそれに相当しそうです time_t mktime(struct tm*);
メンテ
Re: 日付の計算 ( No.5 )
名前:BayLeaf(解決) 日時:2018/09/13 13:33

> yumetodoさん > 管理人さん 遅くなりましたが、実装することができました。 お二方ともありがとうございました。
メンテ

Page: 1 |

題名
名前
コメント
パスワード (記事メンテ時に使用)

   クッキー保存