NSDateFormatter 日付・時刻を文字列にして取得する

現在の日付やデータの更新日時などを文字列にして表示したい場合は NSDateFormatter が利用できます。

NSDateFormatter の setDateFormat でどのような形式の文字列にするのかを指定した後に、日付・時刻を表す NSDate のインスタンスを渡して文字列にします。

サンプルは以下の通りです。

(サンプルでは現在の時刻を取得して文字列に変換しています)

年/月/日 時:分:秒 のサンプル

- (void)sampleNSDateFormatterYYYYMMDDHHMMSS
{
    NSDate *date = [NSDate date] ; // 現在時刻
    
    NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init] ;
    [dateFormatter setDateFormat:@"yyyy/MM/dd HH:mm:ss"] ;
    NSString *dateString = [dateFormatter stringFromDate:date] ;
    
    [self outputResult:dateString] ; // 結果出力用
}

年/月/日 時:分:秒 の出力結果

出力はこんな感じになります。

NSDateFormatter_1_236

月を Jan Feb などの3文字の英語表記にした文字列を取得するサンプル

月を数字で出すときは MM を指定しましたが、3文字の英語表記の場合は MMM を指定します。

- (void)sampleNSDateFormatter3LettersMonth
{
    NSDate *date = [NSDate date] ; // 現在時刻
    
    NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init] ;
    [dateFormatter setDateFormat:@"MMM. dd,yyyy"] ;
    NSString *dateString = [dateFormatter stringFromDate:date] ;
    
    [self outputResult:dateString] ; // 結果出力用
}

月を Jan Feb などの3文字の英語表記にした文字列の出力結果

NSDateFormatter_1_456

月を January February などの英語表記にした文字列を取得するサンプル

月を3文字の英語表記にする場合は MMM を指定しましたが、単語全部を表示する場合は MMMM を指定します。

- (void)sampleNSDateFormatterFullLettersMonth
{
    NSDate *date = [NSDate date] ; // 現在時刻
    
    NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init] ;
    [dateFormatter setDateFormat:@"MMMM. dd,yyyy"] ;
    NSString *dateString = [dateFormatter stringFromDate:date] ;
    
    [self outputResult:dateString] ; // 結果出力用
}

月を January February などの英語表記にした文字列の出力結果

NSDateFormatter_1_676

 

タイムゾーン表記を含めた文字列を取得するサンプル

タイムゾーン(標準時からの時差)を含めた文字列を取得する場合は z を指定します。

- (void)sampleNSDateFormatterYYYYMMDDHHMMSSWithTimezone
{
    NSDate *date = [NSDate date] ; // 現在時刻
    
    NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init] ;
    [dateFormatter setDateFormat:@"yyyy/MM/dd HH:mm:ss z"] ;
    NSString *dateString = [dateFormatter stringFromDate:date] ;
    
    [self outputResult:dateString] ; // 結果出力用
}

タイムゾーン表記を含めた文字列の出力結果

NSDateFormatter_1_896

UILabel 文字の大きさを変更する

UILabel を使って文字列を表示する際の文字の大きさは setFont で文字サイズの値を持つ UIFont のインスタンスを指定して行います。

フォントの種類はそのままで文字サイズだけ変更したい場合は UIFont の fontWithSize を使って種類はそのままでサイズだけ変更した UIFont のインスタンスを生成して使います。

フォントサイズ16 サンプル

- (void)sampleUILabelSetFontSystemFont16
{
    UILabel *label = [[UILabel alloc] initWithFrame:viewFrame] ;
    [label setText:@"Sample Font Size Text 16.0"] ;
    [label setFont:[UIFont systemFontOfSize:16.0]] ;
    [self.view addSubview:label] ;
}

フォントサイズ16 表示結果

UILabel_3_798

フォントサイズ24 サンプル

- (void)sampleUILabelSetFontSystemFont24
{
    UILabel *label = [[UILabel alloc] initWithFrame:viewFrame] ;
    [label setText:@"Sample Font Size Text 24.0"] ;
    [label setFont:[UIFont systemFontOfSize:24.0]] ;
    [self.view addSubview:label] ;
}

フォントサイズ24 表示結果

UILabel_4_676

サイズのみ変更 サンプル

- (void)sampleUILabelSetFontSize12
{
    UILabel *label = [[UILabel alloc] initWithFrame:viewFrame] ;
    [label setText:@"Sample Font Size Text 12.0"] ;
    [label setFont:[label.font fontWithSize:12.0]] ;
    [self.view addSubview:label] ;
}

 サイズのみ変更 表示結果

UILabel_4_896

UILabel 行間を調整する

UILabel を使って複数行の文字列を表示する際の行間を調整する場合は NSAttributedString を使って一行の高さを指定して調整します。

NSMutableParagraphStyle のインスタンスに setMinimumLineHeight と setMaximumLineHeight で行の高さを指定し、それを元に NSAttributedString を生成して UILabel に指定します。

行の高さ16 サンプル

- (void)sampleUILabelSetAttributedTextLineHeight16
{
    CGFloat lineHeight = 16.0 ;
    NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle alloc] init] ;
    [paragraphStyle setMinimumLineHeight:lineHeight] ;
    [paragraphStyle setMaximumLineHeight:lineHeight] ;

    NSString *string = @"Sample Specific Line Height Text 16.0 Sample Specific Line Height Text 16.0 Sample Specific Line Height Text 16.0" ;
    NSDictionary *attributes = [NSDictionary dictionaryWithObjectsAndKeys:paragraphStyle,NSParagraphStyleAttributeName,nil] ;
    NSAttributedString *attributedText = [[NSAttributedString alloc] initWithString:string attributes:attributes] ;

    UILabel *label = [[UILabel alloc] initWithFrame:viewFrame] ;
    [label setNumberOfLines:3] ;
    [label setAttributedText:attributedText] ;
    [self.view addSubview:label] ;
}

行の高さ16 表示結果

UILabel_3_358

行の高さ24 サンプル

- (void)sampleUILabelSetAttributedTextLineHeight24
{
    CGFloat lineHeight = 24.0 ;
    NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle alloc] init] ;
    [paragraphStyle setMinimumLineHeight:lineHeight] ;
    [paragraphStyle setMaximumLineHeight:lineHeight] ;

    NSString *string = @"Sample Specific Line Height Text 24.0 Sample Specific Line Height Text 24.0 Sample Specific Line Height Text 24.0" ;
    NSDictionary *attributes = [NSDictionary dictionaryWithObjectsAndKeys:paragraphStyle,NSParagraphStyleAttributeName,nil] ;
    NSAttributedString *attributedText = [[NSAttributedString alloc] initWithString:string attributes:attributes] ;

    UILabel *label = [[UILabel alloc] initWithFrame:viewFrame] ;
    [label setNumberOfLines:3] ;
    [label setAttributedText:attributedText] ;
    [self.view addSubview:label] ;
}

行の高さ24 表示結果

UILabel_3_578