- ベストアンサー
2つのSYSTEMTIMEの時間の差を求めたい
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
標準関数でやるなら、 SYSTEMTIME→tm構造体へデータをコピー mktime()で、tm構造体から、time_tへ difftime()で差(秒)を求めるとか。 --------------------------------------- SYSTEMTIME→FILETIME→time_t という方法もあるみたいです。 http://keys.jp/egg/archives/2004/12/systemtime_to_t.html 上記と同様に、差はdifftime()で求める。
関連するQ&A
- 時間差と取得するためにはWin32API関数の何を使えばいいですか?
VC++を使っています。 プログラム上で、ある2点間の時間差(経過時間)を得たいのですが、 Win32API関数で、何を使えばいいのでしょうか? SYSTEMTIME構造体で返される時刻関数は、時間差を計算しずらそうなので。。。
- ベストアンサー
- C・C++・C#
- 日付から曜日を求めたい
Windows APIでプログラミングしています。時間のデータはSYSTEMTIMEを使ってます。 日付(wYear, wMonth, wDay)のみの情報から、曜日(wDayOfWeek)を求めたいのですが、どのような方法があるでしょうか?曜日を求めるAPI関数は存在しますか?
- ベストアンサー
- C・C++・C#
- VC++ 文字列のDate型チェック
こんばんは。 VC++でVBのIsDateのような使い方をする関数 CString または CHar配列などの文字列がDate型かどうか チェックする関数を探しています。 MFCとかにないのでしょうか? 2006/05/26とかのチェックは一文字づつ抜き出して xxx/xx/xxという形はチェックできるのですが うるう年とか考慮すると自作だとかなり複雑なものになってしまいそう なので・・・ どなたかお分かりになる方、よろしくお願いします。
- ベストアンサー
- C・C++・C#
- エクセルの関数でその年のその月の合計日数を自動で求めることはできますか
エクセルの関数でその年のその月の合計日数を自動で求めることはできますか? 例えばA1に 2010/10/4(日にちは適当な日数です) 等と入力されていたら B1に自動的に 31と表示される。 A1に2010/9/7 等と入力されていたら B1に自動的に 30と表示される。 また2月の28日やうるう年の29日も考慮してくれるようにしたいのですが・・・。
- ベストアンサー
- その他MS Office製品
- 時間の計算方法
VB超初心者です。 次の時間に関する関数を教えてください。 もちろん自作です。) 1 日数差を計算する。 ANS=DATEAB(A,B) A = "2004/01/08" B = "2003/12/25" ANS=15 2 時間差を計算する。 (1)A = "08:30:00" B = "08:25:00" ANS="00:05:00" (2)A = "00:10:00" B = "23:50:00" ANS="00:20:00"
- 締切済み
- Visual Basic
- 生年月日(yyyy/MM/dd) → 年齢(年月日)への変換
VBで生年月日からの年齢換算の方法が分からず困っています;; やりたいことは 1886/01/22 などの生年月日文字列 → 23歳3ヶ月26日のように年齢に換算するという内容です。 うるう年や各月の日数の違いなどを考慮し始めるとどんどんこんがらがってきて大変困っています。 だれか詳しい方がおりましたらご教授いただけないでしょうか?
- ベストアンサー
- Visual Basic
- うるう年判定のアルゴリズム
javaでうるう年判定のプログラムを作成しています。 プログラム自体はサーバにアップするときに実行結果が正しいかどうかテストされます。 仕様としては、 1.時間に関するAPIなどは一切使わずに完全に自作 2.入力される値はLong型の"秒"数(APIで提供されているのはミリ秒ですが) 3.60537895631062456L などの入力値に対して、年/月/日 (曜日) 時:分:秒 yday=元旦からの経過日数 を出力 最初は以下の関数を使用してループをかけていたのですが、仕様3の入力値に対して50秒近くかかってしまい、上手くいきませんでした。 public static int isLeap(int year){ if(year%4==0 && (year%100!=0 || year%400==0)) return 1; return 0; } 問題点はループ回数が多いことで、作る時点で分かってはいたのですが、ここまで遅くなるとは思っても見ませんでした。 これを使わない方法としては、一回だけうるう年(=n)を見つけ、その後は「(n+4)との比較+100で割り切れず400で割り切れる場合は別」という処理を行うことによって、処理時間を30秒付近にまで短縮することができたのですが、どうも10~15秒以内で終わらせなければテストにパスすることができないようです。 なんとか色々考えてはみたものの、上手いアルゴリズムは思いつきませんでした。 うるう年を処理するための"高速な"アルゴリズムはないのでしょうか。 お知恵を貸してください。よろしくお願いします。
- ベストアンサー
- Java
- うるう年判定のアルゴリズム
javaでうるう年判定のプログラムを作成しています。 プログラム自体はサーバにアップするときに実行結果が正しいかどうかテストされます。 仕様としては、 1.時間に関するAPIなどは一切使わずに完全に自作 2.入力される値はLong型の"秒"数(APIで提供されているのはミリ秒ですが) 3.60537895631062456(Long値) などの入力値に対して、年/月/日 (曜日) 時:分:秒 yday=元旦からの経過日数 を出力 最初は以下の関数を使用してループをかけていたのですが、仕様3の入力値に対して50秒近くかかってしまい、上手くいきませんでした。 public static int isLeap(int year){ if(year%4==0 && (year%100!=0 || year%400==0)) return 1; return 0; } 問題点はループ回数が多いことで、作る時点で分かってはいたのですが、ここまで遅くなるとは思っても見ませんでした。 これを使わない方法としては、一回だけうるう年(=n)を見つけ、その後は「(n+4)との比較+100で割り切れず400で割り切れる場合は別」という処理を行うことによって、処理時間を30秒付近にまで短縮することができたのですが、どうも10~15秒以内で終わらせなければテストにパスすることができないようです。 なんとか色々考えてはみたものの、上手いアルゴリズムは思いつきませんでした。 うるう年を処理するための"高速な"アルゴリズムはないのでしょうか。 お知恵を貸してください。よろしくお願いします。
- ベストアンサー
- C・C++・C#
- DLL の中の関数呼び出し
Windows NT workstation Ver4.0 の上で、ボーランドC++ Ver5 を使って、owl を使ったソフトを作っています。 メーラーを作ろうとして、blatj のソースコードを組み込んでいます。 その中で、gensock.dll を読み込んで、その中の関数を呼び出すところがあるのですが、関数のエイトりーポイントが NULL で返ってきます。 自作した他の DLL については、関数の呼び出しは、 順調なのですが、この gensock.dll については上手くゆかないのです。 そこで、 ボーランドのDLLと、マイクロソフトのDLLでは 呼び出し方にどのような違いがあるのでしょうか? Win API を使ってみても TModule を使ってみても 同じような現象が起きています。 解決方法は gensock.dll のソースコード を使ってボーランドのコンパイラでDLLを作り直す以外には無いのでしょうか?
- ベストアンサー
- C・C++・C#
- DATEDIF関数と普通の引き算による日数計算
7月25日(セルA1)から7月1日(セルB1)までの日数を計算する場合、B1-A1で日数は出てくるようなんですが、例えば月を跨いだ場合、誤差は出てくるのでしょうか?(閏年や、月ごとの総日数の違いなどにより) 日数計算の場合、DATEDIF関数というものもあるようなのですが、これを使うと日数がマイナスになってしまう場合、エラーになってしまうようです。 後者の方が正確であるならば、DATEDIF関数を使いたいんですが、その場合、引き算の結果がプラスになる場合、マイナスになる場合が混在しているデータで使用する場合、どのような計算式を入力すればよいのかが分かりません。 どなたか御存知の方、よろしくお願いします。 ちなみに、単なる引き算で誤差がでないようでしたら、引き算で処理したいと思っています。
- ベストアンサー
- オフィス系ソフト
お礼
アドバイス通りの方法で解決しました。difftime()なんて便利な関数が存在したんですね。ありがとうございました。