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ランキング
-
log2の「正確な」計算方法
-
Perlでファイルの末尾から指定...
-
DOSコマンドで、標準出力を出力...
-
MAC OSXのTerminalにperlの出力...
-
文字列をカウントする方法
-
ファイル全てを .xlsm に変更し...
-
一定時間が経過したフォルダの削除
-
csvファイルの横方向への改行に...
-
while(<ハンドラ>) {} で行数を...
-
画像アップロード機能を追加し...
-
batファイルでrenameができませ...
-
while文がうまく動かない
-
VBAでCSVファイルの特定行を書...
-
MATLABのm-fileについて
-
配列のサイズを動的に拡張
-
ディレクトリのファイル作成を...
-
ANSI Cでファイル名、ディレク...
-
VB6.0でDB接続する際に切断時の...
-
Pythonの再帰関数の動作の流れ...
-
AutoCADのスクリプト
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
awkスクリプトでダブルクォーテ...
-
DOSコマンドで、標準出力を出力...
-
エクセルVBAで素数だけを出力す...
-
教えて!perlから.exeファイル...
-
sprintfについて
-
Perlでファイルの末尾から指定...
-
CGIから外部コマンド実行時の標...
-
重複するデータを抽出できる秀...
-
ファイル出力の改行コードをLFに
-
timeコマンドの結果をテキスト...
-
sprintfで10進数を桁数指定で16...
-
log2の「正確な」計算方法
-
機器のI/OをArduinoでSDに記録...
-
Perl<->Oracle間での文字化けに...
-
Perl中で teeを使っても戻り値...
-
テキストファイルから日本語部...
-
バッチファイルで、記号を含む...
-
htmlから、ファイル、もしくはC...
-
perlでの出力先設定
-
標準エラーと標準出力をファイ...
おすすめ情報