time.hについて

CC-RLコンパイラ(CS+)を用いてRL78/G13マイコンの開発を行っています。その際に2つの日時の差分を求めたいのですが、time.hが使えないみたいで困っています。

何か他に日時の差分を求めるいい方法はありませんでしょうか。よろしくお願いします。

  • hiro様

    とある日付からの経過時間を秒で表現して計算するという事は
    何らかの理由で回避したいという事でしょうか?
  • RTCから現在時刻を取得して、あらかじめ設定された時刻までの日数または時間を表示したいです。いわゆるカウントダウンタイマーみたいなイメージです。
  • 自前で実装されても大した労力ではないと思いますが、Newlib や GNU C Library、uClibc 等のフリーのライブラリのライセンスを確認し該当のプロジェクトで使用可能なものから持ってくるのもひとつの手だと思います。

  • hiro様

    他に計算方法はあると思いますし、他の方から指摘がありそうではありますが
    昔そのようなことをやった際には次のように計算しました。参考までに。

    現在: 1月1日 01時02分30秒
    目標の日付:1月3日13時14分15秒

    目標を1月0日 00:00:00を基準に秒に変換する
    3[日]×86400[秒/日]+13[時間]×3600[秒/時間]+14[分]×60[秒/分] + 15[秒] = 306855秒
    現在も同様にして秒に換算 → 90150秒

    差分は306855 - 90150 = 216705[秒]

    あとは必要に応じて日、時、分に変換
    216705[秒]/86400[秒/日] = 2.5… → 2日と12.19…時間

    きちんとやるなら年跨ぎ、月跨ぎ、日跨ぎの考慮や基準日時の設定などは必要です。

  • hiroさん

    こんにちは、シェルティです。

    最近別のスレッドで似た話題を見かけました。
    IKUZOさんがコードも付けてくれているので参考になるかもしれないです。

    japan.renesasrulz.com/.../sh-time

    以上です
  • 水晶内蔵の外付けRTCを使った方が良いと思いますよ。
    水晶の周波数を調整する必要が無いし。