![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
No.3ベストアンサー
- 回答日時:
まず、次の点を意識してください。
○ Perlにとっては、それは「ただの文字列」であって、「時刻」などではない
○ 文字列を数値演算しようとすると、「先頭の数値と見做せる箇所」が表す数値に変換される
$ip[1]='2013-02-12 17:03:45'
$time='2013-02-12 20:27:26'
の場合
$time=$time-$ip[1];
これは
・ - による数値演算 → 両辺は数値と見做す
・ '2013-02-12 20:27:26' → これは只の文字列。先頭の2013だけが数値と見做せるので、 2013 という数値に変換
・ '2013-02-12 17:03:45' → これは只の文字列。先頭の2013だけが数値と見做せるので、 2013 という数値に変換
→$time= 2013 - 2013 = 0
となり、その「0」と出力されるのが「Perlとして正しい動作」です。
日付の計算をしたいのなら
○DateTimeモジュール等を利用する
○$ip[1]を分解して、timelocal等で epoch秒を計算、 localtimeと比較する
○$ip[1]を分解して、$sec,$min,$hour,$mday,$mon,$yearとそれぞれ比較、集計して差を求める
等の手段を使う必要があります。
No.2
- 回答日時:
$ip[0] の値もわからんし「正しい時間」とやらがどのようなものなのかもわからん.
この回答への補足
申し訳ありません。記述ミスがありました。
$ip[0]ではなく、$ip[1]でした。
($sec,$min,$hour,$mday,$mon,$year) = localtime(time);
$time = sprintf("%04d-%02d-%02d %02d:%02d:%02d",$year+1900,$mon+1,$mday,$hour,$min,$sec);
open(OUT, "< test2.csv");
while($data = <OUT>){
chomp($data);
@ip = split(/,/,$data);
print qq!$ip[1]<br>$time<br>!;
$time=$time-$ip[1];
print qq!$time<br>!;
### 出力結果 ###
2013-02-12 17:03:45
2013-02-12 20:27:26
0
######
$ip[1]には、最終アクセスした時間が入っています。
2013-02-12 17:03:45
$time には現在の時刻です。
2013-02-12 20:27:26
よろしくお願いします。
No.1
- 回答日時:
どんなソースでどんな結果(エラー)になって実際は何がしたいのか、を書かないと何とも言えないですよ。
この回答への補足
恐れ入ります。説明が不足していました。
($sec,$min,$hour,$mday,$mon,$year) = localtime(time);
$time = sprintf("%04d-%02d-%02d %02d:%02d:%02d",$year+1900,$mon+1,$mday,$hour,$min,$sec);
open(OUT, "< test2.csv");
while($data = <OUT>){
chomp($data);
@ip = split(/,/,$data);
print qq!$ip[1]<br>$time<br>!;
$time=$time-$ip[0];
print qq!$time<br>!;
### 出力結果 ###
2013-02-12 17:03:45
2013-02-12 20:27:26
2013
######
となります。2段目と1段目の差が
2013という結果です。
よろしくお願いします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Perl Perlで特定文字列から特定文字列までを抜き出したい 4 2022/04/02 14:24
- Excel(エクセル) エクセルのマクロについて教えてください。 1 2023/02/03 13:18
- C言語・C++・C# 至急教えてください!プログラミングの問題です。 入力待ちをして、受け取った正の整数が表す行数だけ既存 4 2022/07/05 10:12
- その他(プログラミング・Web制作) Windowsのマクロプログラムで、こんなことできますか? 3 2022/06/28 14:30
- Perl Perlでファイルの末尾から指定文字列を検索してファイルに吐き出したい 4 2022/04/04 16:15
- システム CSVファイルのマッピング処理の省力化 1 2022/11/24 00:01
- YouTube ユーチューブへの動画投稿にサムネイルを付ける方法は? 1 2022/07/21 23:45
- Excel(エクセル) 出退勤管理の遅刻・早退時間について 3 2023/08/10 15:33
- Windows 10 Windows10のメタデータの「メディアの作成日時」は、タイムゾーンによって表示が変わりますか? 3 2022/06/21 02:30
- Visual Basic(VBA) エクセル VBAについて教えてください 2 2023/04/26 13:25
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
教えて!perlから.exeファイル...
-
中間ファイルを使わずに処理さ...
-
バッチファイルで、記号を含む...
-
awkスクリプトでダブルクォーテ...
-
複数のチェックボックスの値を...
-
sprintfについて
-
重複するデータを抽出できる秀...
-
C言語で特定の行を抽出する方法...
-
ExcelをCSV書き出す場合のシー...
-
VBAでCSVファイルを途中行まで...
-
バッチファイルの作り方(CSV→...
-
close()で例外が投げられる理由
-
VBAでCSVファイルの特定行を書...
-
readdir()で得られるファイル・...
-
【PHP】アクセス過多でファ...
-
Data::Dumper;でダンプ後表示し...
-
タブの色を変更する方法
-
ファイル出力をUTF8Nではなくて...
-
python renameについて
-
VBAで巨大なファイルの途中から...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
awkスクリプトでダブルクォーテ...
-
エクセルVBAで素数だけを出力す...
-
sprintfについて
-
教えて!perlから.exeファイル...
-
重複するデータを抽出できる秀...
-
log2の「正確な」計算方法
-
DOSコマンドで、標準出力を出力...
-
文字コードの変換(Shift-JISか...
-
perlでの文字列抽出
-
至急お願いします。C言語で.img...
-
ダイアモンド演算子<>に対するb...
-
コマンドプロンプトで行が見え...
-
Perlで着メロDLカウント
-
perlのpushについてです。
-
perlでcsvの出力について
-
CGIから外部コマンド実行時の標...
-
ドメインからIPアドレスあるい...
-
MySQLに画像を格納してperlで取...
-
perlでcsvの指定フィールドに書...
-
htmlから、ファイル、もしくはC...
おすすめ情報