localtime*

[機能]

  time_t 型で格納されている時間を tm 時間構造体(地方時)に変換します.tm 時間構造体は,以下のメンバーから構成されます.
	int tm_sec    秒数( 0 ~ 59 )
	int tm_min    分数( 0 ~ 59 )
	int tm_hour   0 時からの時間( 0 ~ 23 )
	int tm_mday   月の中の日付( 1 ~ 31 )
	int tm_mon    1 月からの月数( 0 ~ 11 )
	int tm_year   1900 年からの年
	int tm_wday   日曜からの曜日( 0 ~ 6 )
	int tm_yday   1 月 1 日からの日数( 0 ~ 365 )
	int tm_isdst  夏時間が有効な場合には 0 以外
		
  Java の場合は,Date クラスCalendar クラスのインスタンスを生成することによって現在時刻を取得できます.ただし,起点は,1970 年の 1 月であり,ミリ秒単位でカウントします.Date クラスの場合は,toString メソッドによって,また,Calendar クラスの場合は,get メソッドによって,年や月を得ることが可能です.さらに,いずれのクラスにおいても,getTime メソッドによって,ミリ秒単位の経過時間( C/C++ の time 関数で得られるものに相当)に変換することも可能です.なお,経過時間は,System クラスの static メソッド currentTimeMillis によっても得ることができます.

[形式]
	#include <time.h>

	struct tm *localtime(const time_t *timer)
		timer : 格納された時間へのポインタ
		
[使用例]

  1. 現在の時間と日付を出力します(C/C++)
    #include <stdio.h>
    #include <time.h>
    
    int main()
    {
    	struct tm *newtime;
    	time_t aclock;
    	char *now;
    
    	time(&aclock);                       /* 現在時刻の獲得 */
    /*
    		 asctimeを使用した出力
    */
    	newtime = localtime(&aclock);        /* tm構造体への変換 */
    
    	now     = asctime(newtime);          /* 文字列への変換 */
    
    	printf("経過時間は(aclock,秒)=%ld\n", aclock);
    	printf("今日の日付と現在時刻は(asctime)=%s", now);
    	printf("メンバーの出力\n");
    	printf("     tm_year %d\n", newtime -> tm_year);
    	printf("     tm_mon  %d\n", newtime -> tm_mon);
    	printf("     tm_mday %d\n", newtime -> tm_mday);
    /*
    		 ctimeを使用した出力
    */
    	now = ctime(&aclock);                /* 文字列への変換 */
    
    	printf("今日の日付と現在時刻は(ctime)=%s", now);
    
    	return 0;
    }
    			
    (出力)
    経過時間は(aclock,秒)=945656374
    今日の日付と現在時刻は(asctime)=Mon Dec 20 11:19:34 1999
    メンバーの出力
         tm_year 99
         tm_mon  11
         tm_mday 20
    今日の日付と現在時刻は(ctime)=Mon Dec 20 11:19:34 1999
    			
  2. 現在の時間と日付を出力します(Java)
    import java.io.*;
    import java.util.Date;
    import java.util.Calendar;
    
    public class Test {
    
    	public static void main(String args[]) throws IOException
    	{
    		String now, year, mon, day;
    		Calendar cal = Calendar.getInstance();   // 抽象クラスであるため
    
    		Date newtime = new Date();   // 現在時刻の獲得
    		now = newtime.toString();    // 文字列への変換
    
    		System.out.println("経過時間は(ミリ秒)=" + newtime.getTime());   // 次の方法でも良い
    //		System.out.println("経過時間は(ミリ秒)=" + System.currentTimeMillis());
    		System.out.println("今日の日付と現在時刻は=" + now);
    		System.out.println("年,月,日の出力");
    		System.out.println("     年 " + cal.get(Calendar.YEAR));
    		System.out.println("     月 " + (cal.get(Calendar.MONTH)+1));
    		System.out.println("     日 " + cal.get(Calendar.DAY_OF_MONTH));
    	}
    }
    			
    (出力)
    経過時間は(ミリ秒)=945660048830
    今日の日付と現在時刻は=Mon Dec 20 12:20:48 JST 1999
    年,月,日の出力
         年 1999
         月 12
         日 20
    			
[参照]

ctime, gmtime, asctime, time, difftime

菅沼ホーム 本文目次 演習問題解答例 付録目次 索引