秒数から時間とデジタル時計を取得する「DCClock」クラス

Objective-Cで指定した秒数から時・分・秒数を取得する「DCClock」クラスを作成しました。

秒数からデジタル時計形式の文字列取得も行えます。1桁の数字の桁数を増やして文字列として取得する機能も付属しています。

主な機能は下記の3つです。

主な機能

  1. 指定した秒数から時・分・秒数を数値/文字列で取得
  2. デジタル時計形式で文字列を取得
  3. 1桁の数字の桁数を指定した分だけ増やして文字列取得

下記よりソースコードのダウンロードが行えます。

ダウンロード

ソースコード

DCClock.h

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#import <Foundation/Foundation.h>

#define MIN_SEC 60
#define TEN_SEC 10

@interface DCClock : NSObject

#pragma mark - public method
+ (NSString *)digitalClockTime:(NSInteger)seconds;
+ (NSInteger)hour:(NSInteger)seconds;
+ (NSInteger)min:(NSInteger)seconds;
+ (NSInteger)sec:(NSInteger)seconds;
+ (NSString *)hourStr:(NSInteger)seconds;
+ (NSString *)minStr:(NSInteger)seconds;
+ (NSString *)secStr:(NSInteger)seconds;
+ (NSString *)increaseDigits:(NSInteger)value digits:(NSUInteger)digits;

@end

DCClock.m

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
#import "DCClock.h"

@implementation DCClock

#pragma mark - Digital Clock Time

// デジタル時計の文字列取得
+ (NSString *)digitalClockTime:(NSInteger)seconds
{
    NSString *hour = [DCClock increaseDigits:[DCClock hour:seconds] digits:1];
    NSString *min  = [DCClock increaseDigits:[DCClock min:seconds] digits:1];
    NSString *sec  = [DCClock increaseDigits:[DCClock sec:seconds] digits:1];
    return [NSString stringWithFormat:@"%@:%@:%@", hour, min, sec];
}

#pragma mark - Integer Time

// 時間を取得
+ (NSInteger)hour:(NSInteger)seconds
{
    return floor((seconds / MIN_SEC) / MIN_SEC);
}

// 分数を取得
+ (NSInteger)min:(NSInteger)seconds
{
    return floor((seconds / MIN_SEC) % MIN_SEC);
}

// 病数を取得
+ (NSInteger)sec:(NSInteger)seconds
{
    return floor(seconds % MIN_SEC);
}

#pragma mark - String Time

// 時間の文字列を取得
+ (NSString *)hourStr:(NSInteger)seconds
{
    return [NSString stringWithFormat:@"%d", [DCClock hour:seconds]];
}

// 分数の文字列を取得
+ (NSString *)minStr:(NSInteger)seconds
{
    return [NSString stringWithFormat:@"%d", [DCClock min:seconds]];
}

// 秒数の文字列を取得
+ (NSString *)secStr:(NSInteger)seconds
{
    return [NSString stringWithFormat:@"%d", [DCClock sec:seconds]];
}

#pragma mark - Util

// 桁数を増やす
+ (NSString *)increaseDigits:(NSInteger)value digits:(NSUInteger)digits
{
    NSString *valueStr = [NSString stringWithFormat:@"%d", value];
    if (value < TEN_SEC) {
        for (int i = 1; i <= digits; i++) {
            valueStr = [NSString stringWithFormat:@"%@%@", @"0", valueStr];
        }
    }
    return [NSString stringWithFormat:@"%@", valueStr];
}

@end

サンプルソースコード

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
#import "ViewController.h"

@interface ViewController ()

@property NSInteger countdownSec;
@property UILabel   *countdownLabel;
@property NSTimer   *countdownTimer;

@end

@implementation ViewController

- (void)viewDidLoad
{
    [super viewDidLoad];

    //背景指定
    self.view.backgroundColor = [UIColor underPageBackgroundColor];

    //カウントダウン秒数 (初期値)
    _countdownSec = 4000;
  
    //カウントダウンラベル配置
    _countdownLabel = [DCLabel planeLabel:CGRectMake(0, 0, 320, 48)
                                             text:[DCClock digitalClockTime:_countdownSec]
                                             font:[UIFont fontWithName:@"Helvetica" size:20]
                                        textColor:[UIColor whiteColor] textAlignment:NSTextAlignmentCenter
                                  backgroundColor:[UIColor colorWithRed:0.0f green:0.0f blue:0.0f alpha:0.5f]];
    [self.view addSubview:_countdownLabel];

    //カウントダウンタイマー定義
    [DCTimer setTimer:1.0f delegate:self selector:@selector(countdownTimerEvent:) userInfo:nil];
}

//カウントダウンタイマーイベント
- (void)countdownTimerEvent:(NSTimer *)timer
{
    _countdownSec--;
    if (_countdownSec == 0) {
        [DCTimer clearTimer];
    }
    [self updateCountdownLabel:[DCClock digitalClockTime:_countdownSec]];
}

//カウントダウンラベル更新
- (void)updateCountdownLabel:(NSString *)remainingTime
{
    _countdownLabel.text = remainingTime;
}

@end

関連記事

お薦めの参考書

本気ではじめるiPhoneアプリ作り Xcode 7.x+Swift 2.x対応
iOSアプリ開発をこれから始める方に最もお薦めな一冊です。解り辛い点は図解入りで解説されており、プログラミングの動作の仕組みから詳しく知ることができます。基本から通信処理まで押さえられており、アプリ公開の手順についても解説されています。

   このエントリーをはてなブックマークに追加

About

Masaki Hirokawa (@dolice_apps)

デザインエンジニア 廣川政樹の開発ブログ。Objective-Cや Javaなど iPhone/Androidアプリ開発に関する技術情報を掲載しています。

iPhone apps

  • リラックス・ヒーリング(無料)
  • 望みが叶う!引き寄せの法則アプリ(無料)
  • ミステリー - 怖い話や不思議な体験、都市伝説まとめ
  • 浮世絵壁紙 - 美しい日本画ギャラリー(無料)
  • アート壁紙HD(無料)
  • 綺麗な壁紙HD iPhone 7/7 Plus/SE & iPod対応(無料)
  • クールな壁紙HD iPhone 7/7 Plus/SE & iPod対応(無料)

Android apps

  • 浮世絵壁紙 - 美しい日本画ギャラリー
  • 綺麗な高画質壁紙

Objective-C Classes

Tag Cloud

ActionScript(9) ActionScript3(7) Ad(4) Adfurikun(2) AdMob(9) Android(10) Animation(17) AppDelegate(3) ARC(1) ArrayList(1) AVAudioPlayer(4) AVAudioSession(1) AVFoundation(3) Banner(2) Bitmap(1) Camera(4) CGAffineTransform(4) CGBlendMode(2) CGContextRef(1) CGImageRef(1) Classes(44) CLLocationManager(1) ConnectivityManager(1) ContentResolver(1) CoreLocation(2) Delegate(3) Device(7) Display(1) DisplayMetrics(1) Download(101) Facebook(6) Foundation(72) Framework(2) Google Analytics(1) Handler(1) iAd(6) ImageView(1) In-AppPurchase(1) iOS(12) iOS 7(15) iOS 7.1(3) iOS 8(1) iPad(7) iPhone(21) iPhone 6(4) Java(7) JavaScript(2) LINE(4) Localize(1) Magazine(1) MediaStore(1) MFComposeViewController(1) Nend(1) NetworkInfo(1) NSArray(23) NSCalendar(3) NSData(2) NSDate(7) NSDateComponents(2) NSDateFormatter(2) NSDictionary(12) NSEnumerator(1) NSIndexSet(1) NSInteger(6) NSMutableArray(17) NSMutableDictionary(5) NSMutableOrderedSet(7) NSMutableString(4) NSMutableURLRequest(1) NSNotificationCenter(1) NSNumber(1) NSObject(1) NSOrderedSet(7) NSRange(2) NSSelectorFromString(1) NSSet(6) NSString(19) NSTimer(4) NSTimeZone(1) NSURL(7) NSURLConnection(1) NSURLRequest(2) NSUserDefaults(7) NSXMLParser(2) Objective-C(222) PHP(1) Products(14) QuartzCore(3) RSS(2) Runnable(1) Sample(51) Screensaver(9) SDK(2) ShareCompat(1) Social(10) StoreKit(1) Twitter(6) UIAccelerometer(3) UIActionSheet(1) UIActivityIndicator(1) UIActivityIndicatorView(3) UIActivityViewController(1) UIAlertView(5) UIApplication(7) UIButton(4) UIColor(3) UIDatePicker(5) UIDevice(6) UIDeviceOrientation(1) UIEvent(6) UIImage(15) UIImagePickerController(4) UIImageView(12) UIKit(58) UILabel(7) UINavigationBar(4) UINavigationItem(1) UIPasteboard(4) UIScreen(1) UIScrollBar(1) UIScrollView(1) UISlider(3) UIStoryboardSegue(3) UISwitch(1) UITabBar(3) UITableView(4) UITextField(2) UIView(11) UIViewAnimationTransition(1) UIViewController(4) UIWebView(5) WindowManager(1) Xcode(48) Xcode 5(8) Xcode 5.1(2)