時間のフォーマットに変換 – プログラミング – Home

時間のフォーマットに変換
 
通知
すべてクリア

[解決済] 時間のフォーマットに変換


泰三
 泰三
(@泰三)
ゲスト
結合: 23年前
投稿: 14
Topic starter  

こんにちは

date[0] = 0x20;
date[1] = 0x03;
date[2] = 0x01;
date[3] = 0x01;

time[0] = 0x01;
time[1] = 0x01;
time[2] = 0x01;

と設定された、

char date[4];
char time[3];

を引数にして、
string 2003/01/01 01:01:01
をreturnする関数を作成したいのですが、どなたかヒントだけでも頂けますか?
宜しくお願いします。


引用未解決
トピックタグ
NEG(ねぐ)
 NEG(ねぐ)
(@NEG(ねぐ))
ゲスト
結合: 23年前
投稿: 178
 

 じゃーヒントだけ、、、
 私ならsprintfを使うかな。


返信引用
PAI
 PAI
(@PAI)
ゲスト
結合: 24年前
投稿: 359
 

0x20 と 0x03 から 2003 を作るのは難しそうだ。


返信引用
NEG(ねぐ)
 NEG(ねぐ)
(@NEG(ねぐ))
ゲスト
結合: 23年前
投稿: 178
 

sprintf(buf,%02x%02x,date[0],date[1]);


返信引用
泰三
 泰三
(@泰三)
ゲスト
結合: 23年前
投稿: 14
Topic starter  

#include <stdio.h>
#include <string.h>

void main()
{
printf(Test\n);

char date[4];
char time[3];

char buff[1024];

date[0] = 0x20;
date[1] = 0x03;
date[2] = 0x01;
date[3] = 0x01;

time[0] = 0x01;
time[1] = 0x01;
time[2] = 0x01;

int i;
i = sprintf(buff,%02x%02x,date[0],date[1]);
i += sprintf( buff + i, /);
i += sprintf( buff + i, %02x,date[2]);
i += sprintf( buff + i, /);
i += sprintf( buff + i, %02x,date[3]);
i += sprintf( buff + i, );
i += sprintf( buff + i, %02x,time[0]);
i += sprintf( buff + i, :);
i += sprintf( buff + i, %02x,time[1]);
i += sprintf( buff + i, :);
i += sprintf( buff + i, %02x,time[2]);
// i += sprintf( buff + i, \0);

printf(buff = %s\n,buff);

}

こんな感じにしてみたのですが、
何か他に良い方法があったら教えていただけますか?

最後のコメント部はやっぱりいらないですよね?


返信引用
NEG(ねぐ)
 NEG(ねぐ)
(@NEG(ねぐ))
ゲスト
結合: 23年前
投稿: 178
 

 長いのは好きじゃないので、こんな感じかな。(^_^;
sprintf(buff,%02x%02x/%02x/%02x %02x:%02x:%02x,
date[0],date[1],date[2],date[3]
time[0],time[1],time[2]);

 \0は付いてるので、コメント部分は要りません。


返信引用
NEG(ねぐ)
 NEG(ねぐ)
(@NEG(ねぐ))
ゲスト
結合: 23年前
投稿: 178
 

 最後のカンマが抜けてた。(;_;)
> date[0],date[1],date[2],date[3],


返信引用
泰三
 泰三
(@泰三)
ゲスト
結合: 23年前
投稿: 14
Topic starter  

なるほど。
ありがとうございました。


返信引用
ku
 ku
(@ku)
ゲスト
結合: 25年前
投稿: 312
 

余計なことではあるけど注意点を

日付が12月31日なら
date[2] = 0x12;
date[3] = 0x31;
となるのかな?

今回のものでは問題ないし不整合は起きないけど、
たとえば1月7日の1週間後を求めて出力しようとしたとき
このままだと少し面倒ではないかな?
date[3] = 0x07;
date[3] += 7;
とすると
date[3]は0x0eとなってしまうので、date[3]が0x14になるように計算しないといけない


返信引用
NEG(ねぐ)
 NEG(ねぐ)
(@NEG(ねぐ))
ゲスト
結合: 23年前
投稿: 178
 

 書かれてないけど、データはBCDで来るのだと私は判断しましたが、、、


返信引用
...
 ...
(@...)
ゲスト
結合: 23年前
投稿: 113
 

http://rararahp.cool.ne.jp/cgi-bin/lng/csharp/csharplng.cgi?
print+200302/03020003.txt
CとC#は別物ですよ。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました