Tabs

iPhone&Androidのアプリ制作・デザイン

*

経過時間を算出する

      2015/01/18


まず比較する為の時刻を予めローカルに保存するために
NSUserDefaultsというクラスを使用します。

これはiPhoneなどの端末に直接データを保存するもので、たとえアプリを終了させたとしても次回起動時に呼び出せるとても便利なクラスです。

さてその使い方ですが、こちらです。

// 現在時刻の保存
NSDate* date = [NSDate date];
[[NSUserDefaults standardUserDefaults] setObject:date forKey:@"KEY"];

setObjectに保存したいデータ forKey にキーを設定します。
キーはデータの保存、保存したデータを呼び戻す時に使うため、アプリ内で一意のものでなければなりません。
データ保存はアプリ制作には欠かせないものなので覚えておくことをお勧めします!

// 現在時間の取得
NSDate *now = [NSDate date];

// 前回保存した時間を取得
NSDate *past = [[NSUserDefaults standardUserDefaults] objectForKey:@"KEY"];

// nowからpastを引いて差分を取得します
float tmp= [now timeIntervalSinceDate:past];

NSUserDefaultsで前回の時刻を取得します。
そして前回保存した時間と現在時刻をtimeIntervalSineceDateで差分を計算。

これで前回の時間からの経過時間が取得出来ます!

しかし秒単位で返ってくるので場合によっては分や時間に直す必要が出てきます。
こちらがそれぞれの単位に対応した変換方法です。

// 時
int hour = (int)(tmp / 3600);
// 分
int min = (int)(tmp / 60);
// 秒
float sec = tmp;

これで経過時間を取得出来ます。
Twitterのタイムラインに表示する相対時間の表示にも使えますよ(°ω°)


 - Begin

  関連記事

eyechatch_xcode_tips-300x300
ボタンに画像(背景)を指定する

// ボタンのサイズを指定する UIButton *startBtn = [[U …

no image
画面ローテーション

画面ローテーションを制御する場合は下記を追加する – (BOOL)s …

no image
UILabelをコードで生成(Tips付)

Main Storyboard (IB)に用意されている Label を使わずに …

eyechatch_xcode_tips-300x300
SNS連携

Twitter・Facebookとの連携は #import <Social …

no image
アプリの名前をつける

iPhoneのホーム画面に表示される「アプリ名」の付け方 アプリ名の変更には上 …

eyechatch_xcode_tips-300x300
LaunchImage 関連の設定

▼アプリ起動時のスプラッシュ画面 通常はチラっと一瞬だけ表示されるスプラッシュ画 …

eyechatch_xcode_tips-300x300
よく使うショートカット

Ctrl+6 : 表示中のクラスのメソッド一覧 さらにテキスト入力してインクリメ …

eyechatch_xcode_tips-300x300
負の数を絶対数へ変換 abs

負の数を自然数(マイナスを含まない数字)にしたくて、「Xcode 自然数 変換」 …

eyechatch_xcode_tips-300x300
.selected

インスタンス名.selected で BOOLを宣言せずにボタンのON/OFF状 …

no image
BGM・SE 導入方法

音楽:導入方法 1… AVFoundationフレームワークを追加 2… hファ …