スレッド表示 | フラット表示〕 全トピック 920 件中 114 番目 次≫ ≪前

マイクロ秒の取得・表示について

created: 2007-05-17 09:48 | modified: 2007-05-17 22:29 | reply: 8

[3746] マイクロ秒の取得・表示について

user: mimi | created: 2007-05-17 09:48
こんにちは。初心者ですが宜しくお願いします。
PHP+MySQLですが、マイクロ秒を取得し、テーブルに記録、PHPで以下のように表示したいのです。
09時40分05秒25(秒はコンマ二桁まで表示)

この場合の方法は、マイクロ秒を取得してまずテーブルに書き込み、表示する段階で表示方法を指定するということでよいのでしょうか?フィールドのデータ型は何を指定すればよいでしょう?
reply: 3747 返信 編集 削除

[3747] Re. マイクロ秒の取得・表示について

user: ゆうじ | created: 2007-05-17 14:35
こんにちは。

> この場合の方法は、マイクロ秒を取得してまずテーブルに書き込み、
> 表示する段階で表示方法を指定するということでよいのでしょうか?

可能な限り汎用的な形で格納するのが理想といえますので
考えていらっしゃる方法で良いのではないでしょうか。
良いか悪いかは設計者の判断ですよね。


> フィールドのデータ型は何を指定すればよいでしょう?

Mysqlにはマイクロ秒まで扱える日時時刻型はなかったとおもいますので
VARCHAR か DOUBLE(8byte)、FLOAT(4byte) になろうと思います。
まあこれも設計者次第なので、どう利用するかによって判断してください。
Parent: 3746  reply: 3748 返信 編集 削除

[3748] マイクロ秒の取得・表示について

user: mimi | created: 2007-05-17 15:33
ゆうじさんありがとうございました。

昨日からいろいろと試していて、どうにも上手くいかずに質問させていただきました。
それで、もう一つお願いできないでしょうか?
単純にマイクロ秒を取得して希望の表示形式にするまでには(助けもあって)何とかなったのですが、それをDBに格納したデータに対して表示形式を指定するところで行き詰まっています。

マイクロ秒の取得と表示
list($micro, $Unixtime) = explode(" ", microtime());
$sec = $micro + date("s", $Unixtime);
echo date("H時i分", $Unixtime);
printf("%d秒%02d", $sec, $sec * 100 % 100);
→15時30分15秒.25 のような表示になります。

PHPの表示部分
print("<td><div>".$row["date2"]."</div></td>");
”date2”がマイクロ秒を格納しているフィールドです。

お手数ですが、是非ご教授いただけないでしょうか?
宜しくお願いいたします。
Parent: 3747  reply: 3749 返信 編集 削除

[3749] Re. マイクロ秒の取得・表示について

user: ゆうじ | created: 2007-05-17 16:37
$row["date2"] には、
どんなフォーマットで納めてあるのでしょう?
Parent: 3748  reply: 3750 返信 編集 削除

[3750] Re.Re. マイクロ秒の取得・表示について

user: mimi | created: 2007-05-17 17:07
> $row["date2"] には、
> どんなフォーマットで納めてあるのでしょう?

はい、以下のようになっています。
0.31157000 1179319955

フィールドタイプはvarcharです。
宜しくお願いいたします。
Parent: 3749  reply: 3751 返信 編集 削除

[3751] Re. マイクロ秒の取得・表示について

user: ゆうじ | created: 2007-05-17 18:58
それならば、以下のコードのmicrotime()を
$row["date2"] に置き換えるだけでいいのでは。

list($micro, $Unixtime) = explode(" ", microtime());
$sec = $micro + date("s", $Unixtime);
echo date("H時i分", $Unixtime);
printf("%d秒%02d", $sec, $sec * 100 % 100);
Parent: 3750  reply: 3752 返信 編集 削除

[3752] Re.Re. マイクロ秒の取得・表示について

user: mimi | created: 2007-05-17 19:33
> それならば、以下のコードのmicrotime()を
> $row["date2"] に置き換えるだけでいいのでは。

ゆうじさんへ。
こんな感じでしょうか?

list($micro, $Unixtime) = explode(" ", $row["date2"] );
$sec = $micro + date("s", $Unixtime);
$time1 = date("H時i分", $Unixtime);
$time2 = printf("%d秒%02d", $sec, $sec * 100 % 100);

print("<tr>");
print("<td rowspan=2 bgcolor=#FFFFcc><div align=center>".$i."</div></td>");
print("<td><div align=center>".$time1."</div></td>");
print("</tr>");
print("<tr>");
print("<td><div align=center><b>".$row["no"].$row["answer"]."</b></div></td>");
print("</tr>\n");

$time1は問題なく表示できましたが、$time2が上手くいきません。何かコツがあるのでしょうか?
Parent: 3751  reply: 3754 返信 編集 削除

[3754] Re. マイクロ秒の取得・表示について

user: ゆうじ | created: 2007-05-17 22:08
コツ以前に、「上手くいきません」 では
どうなってるのさっぱりかわかりませんよ。
実際におきてる現象を具体的に説明してください。

コードの表示部分には、
$time2が反映されてるところがありませんし。
Parent: 3752  reply: 3755 返信 編集 削除

[3755] Re.Re. マイクロ秒の取得・表示について

user: mimi | created: 2007-05-17 22:29
> コツ以前に、「上手くいきません」 では
> どうなってるのさっぱりかわかりませんよ。
> 実際におきてる現象を具体的に説明してください。
>
> コードの表示部分には、
> $time2が反映されてるところがありませんし。

言葉足らずで申し訳ありません。
$time1の後に続けて$time2を記述したのですが、表示されませんでした。
それで、以下のようにしました。
$time = explode(" ",microtime());
$mctime = $time[0] + $time[1];
$time1 = date("H時i分s秒", $time[1]);
$time2 = $time[0] * 100 % 100;

print("<td><div>".$row["time1"].$row["time2"]."</div></td>");

$time2の値を格納するフィールドのサイズを2バイトに設定

ちょっと強引なやり方ですが、とりあえず何とかなりました。
お忙しい中、いろいろとありがとうございました。
Parent: 3754  返信 編集 削除
スレッド表示 | フラット表示〕 全トピック 920 件中 114 番目 次≫ ≪前
ページの一番上へ
Googleグックマークに登録 Yahooグックマークに登録 livedoorクリップに登録 @niftyクリップに登録 はてなブックマークに登録 deliciousに登録 Buzzurlに登録 FC2ブックマークに登録
最近更新された掲示板トピックス
管理人Blog
Yahoo Search

最近更新したNote
PHPマニュアル
今日のブックマーク
PHPマニュアル関数検索
関数名を入力し検索ボタンをクリック↑