
いつもお世話になっております。
現在時刻を取得し、yyyymmddhhmmss形式で
ひとつの変数に持たせたいとおもっているのですが
可能でしょうか?
----------
1 #include <stdio.h>
2 #include <time.h>
3
4 int main(void)
5 {
6 struct tm *date;
7 time_t now;
8 int year;
9 int month;
10 int day;
11 int hour, minute, second;
12
13 /* 現在の日時を取得 */
14 time(&now);
15 date = localtime(&now);
16
17 year = date->tm_year + 1900;
18 month = date->tm_mon + 1;
19 day = date->tm_mday;
20 hour = date->tm_hour;
21 minute = date->tm_min;
22 second = date->tm_sec;
23
24 return 0;
25
26 }
27
---------------
yearからsecondを結合してひとつの変数に格納することは可能でしょうか??
A 回答 (6件)
- 最新から表示
- 回答順に表示
No.6
- 回答日時:
追記。
蛇足ですが、MS-DOSのFATファイルシステムでは、ファイルのタイムスタンプを
年:残り7ビット使用(1980年を0とする。1980~2107年のみ可)
月:1~12なので、4ビット使用
日:1~31なので、5ビット使用
時:0~23なので、5ビット使用
分:0~59なので、6ビット使用
秒:0~59を2で割り、5ビット使用
という形式で、32ビットで記録しています。
このため、ファイルのタイムスタンプは「偶数秒のみ」になっています。
あともう一つ、別の方法。
年:1980年を0とする
月:0~11(1月は0、12月は11とする)
日:0~30(1日は0、31日は30とする)
時:0~23
分:0~59
秒:0~59
として
年×32140800+月×2678400+日×86400+時×3600+分×60+秒
を計算して32ビット整数に格納すれば、1980~2113年まで使えます。
この方法なら、基準年から133年間使え、秒も1秒単位になります。
No.5
- 回答日時:
>yearからsecondを結合してひとつの変数に格納することは可能でしょうか??
・構造体変数に格納する(tm構造体を使う)
・文字列に変換する
・14桁の数値としてdouble型変数に格納する
・14桁の数値として64ビット変数に格納する
・32ビット整数にパックする
・64ビット整数にパックする
など。
●構造体変数に格納する(tm構造体を使う)方法
ANo.2参照
●文字列に変換する方法
ANo.3参照
●14桁の数値としてdouble型変数に格納する方法
ANo.4参照
●14桁の数値として64ビット変数に格納する方法
ANo.4の回答のdouble型をlong long型に変えるだけ
●32ビット整数にパックする方法
年:残り6ビット使用(2000年を0とする。2000~2063年のみ可)
月:1~12なので、4ビット使用
日:1~31なので、5ビット使用
時:0~23なので、5ビット使用
分:0~59なので、6ビット使用
秒:0~59なので、6ビット使用
unsigned long packed_date_time;
packed_date_time =
(((date->tm_year - 100) & 0x3f) << 26) |
(((date->tm_mon + 1) & 0x0f) << 22) |
((date->tm_mday & 0x1f) << 17) |
((date->tm_hour & 0x1f) << 12) |
((date->tm_min & 0x3f) << 6) |
(date->tm_sec & 0x3f);
●64ビット整数にパックする方法
年:残り全ビット使用(西暦そのまま)
月:1~12なので、4ビット使用
日:1~31なので、5ビット使用
時:0~23なので、5ビット使用
分:0~59なので、6ビット使用
秒:0~59なので、6ビット使用
unsigned long long packed_date_time_L64;
packed_date_time_L64 =
((unsigned long long)(date->tm_year + 1900) << 26) |
(((date->tm_mon + 1) & 0x0f) << 22) |
((date->tm_mday & 0x1f) << 17) |
((date->tm_hour & 0x1f) << 12) |
((date->tm_min & 0x3f) << 6) |
(date->tm_sec & 0x3f);
No.4
- 回答日時:
>yearからsecondを結合してひとつの変数に格納することは可能でしょうか??
こんな方法も・・。
double dDate; // 「ひとつの変数」
(略)
dDate = (double)year * 10000000000.0;
dDate += (double)month * 100000000.0;
dDate += (double)day * 1000000.0;
dDate += (double)hour * 10000.0;
dDate += (double)minute * 100.0;
dDate += (double)second;
printf( "%14.0lf\n", dDate );
http://okwave.jp/qa4527749.html を見た後だったもので・・。
☆なお、この変数を利用する場合、「浮動小数点数」であることにご注意下さい。
http://www.cc.kyoto-su.ac.jp/~yamada/pB/float.html
No.3
- 回答日時:
> 現在時刻を取得し、yyyymmddhhmmss形式でひとつの変数に持たせたい
というのが「文字列を取得したい」という意味であれば、strftime()で可能です。
フォーマットは "%Y%m%d%H%M%S" を指定すればよいでしょう。

No.2
- 回答日時:
OSとコンパイラは何でしょうか。
また、1つの変数の型はなんでもよいのですか?
なんでもよければ、
struct tm *dateのところを
更に
struct tm date_save;を定義して
date_save = *date;
とすれば、date_saveにそのまま格納されます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- CGI perlで書いたcgiでsqliteの使い方を教えてください 2 2023/05/08 21:29
- その他(プログラミング・Web制作) python 気象データの取得 2 2023/06/20 23:54
- Visual Basic(VBA) 【VBA】先月分の取得ができない理由が分かりません。 2 2022/04/24 11:16
- Visual Basic(VBA) ①ExcelVBAでカレンダーを作り、別のユザーフォームで日付を入力したいのですがエラーになります。 1 2023/02/17 18:39
- Visual Basic(VBA) swiftで年号を 1 2023/02/05 06:48
- Visual Basic(VBA) 今日の日付が過ぎたらその行を削除したい 1 2023/04/01 20:06
- 英語 to date 2 2023/05/23 23:22
- WordPress(ワードプレス) wordpressでphpを読み込みたい 1 2022/10/30 23:40
- MySQL MYSQL エラー 2 2022/10/18 11:37
- C言語・C++・C# バイナリファイルをコピーするのにかかる時間を測りたいのですが実行するとFatel error:gli 2 2022/11/03 01:10
関連するカテゴリからQ&Aを探す
今、見られている記事はコレ!
-
弁護士が語る「合法と違法を分けるオンラインカジノのシンプルな線引き」
「お金を賭けたら違法です」ーーこう答えたのは富士見坂法律事務所の井上義之弁護士。オンラインカジノが違法となるかどうかの基準は、このように非常にシンプルである。しかし2025年にはいって、違法賭博事件が相次...
-
釣りと密漁の違いは?知らなかったでは済まされない?事前にできることは?
知らなかったでは済まされないのが法律の世界であるが、全てを知ってから何かをするには少々手間がかかるし、最悪始めることすらできずに終わってしまうこともあり得る。教えてgooでも「釣りと密漁の境目はどこです...
-
カスハラとクレームの違いは?カスハラの法的責任は?企業がとるべき対応は?
東京都が、客からの迷惑行為などを称した「カスタマーハラスメント」、いわゆる「カスハラ」の防止を目的とした条例を、全国で初めて成立させた。条例に罰則はなく、2025年4月1日から施行される。 この動きは自治体...
-
なぜ批判コメントをするの?その心理と向き合い方をカウンセラーにきいた!
今や生活に必要不可欠となったインターネット。手軽に情報を得られるだけでなく、ネットを介したコミュニケーションも一般的となった。それと同時に顕在化しているのが、他者に対する辛らつな意見だ。ネットニュース...
-
大麻の使用罪がなかった理由や法改正での変更点、他国との違いを弁護士が解説
ドイツで2024年4月に大麻が合法化され、その2ヶ月後にサッカーEURO2024が行われた。その際、ドイツ警察は大会運営における治安維持の一つの方針として「アルコールを飲んでいるグループと、大麻を吸っているグループ...
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
「20100101」を「2010/01/01」...
-
日付の比較
-
"0412" を "04" と "12" で区切る
-
RSSデータ表示に関しまして【ギ...
-
timestamp(14)のフォーマットに...
-
AND検索のスクリプト記述方法(...
-
PHP に詳しい方教えてください
-
変数から日付を取得したい
-
strtotime 前月・前々月の表示
-
1週間分の日付を日が変わるごと...
-
PHPで変数にある前の日の曜日を...
-
日付のフォーマットを操作する
-
名前空間の取得について
-
子ノードの出力について
-
PHP mysql 時刻表示方法
-
WP 日時で分岐して表示を変えたい
-
MysqlとPHPで5年前のものを絞...
-
PHPのプロセス滞留について
-
128ビットの接続セキュリティー
-
コマンド実行の成功有無を知りたい
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
開始と終了を指定して、その間...
-
ファイル名に日付の挿入
-
昨日の日付名でファイルを作成...
-
昨日の日付を取得するVBscript
-
C言語でシステム日付との差を...
-
Accessで、DAOでAddnew
-
DB内 データ表示
-
日付によって画像を変える
-
改行されないカレンダー(PHP)
-
重複を無くしたい
-
日付
-
Accessコンボボックス
-
C言語を使って、ある特定の日の...
-
PHPとPostgreSQLを使用した勤務...
-
アップロードしたファイル名に...
-
PHPでn日後を計算したい
-
日付時間をファイル名にしたい...
-
substrの使い方について教えて...
-
月曜日から始まる週間カレンダ...
-
md5について
おすすめ情報