rakutoネット
お問合せ 免責事項 Q&A 掲示板 サイト管理 リンク サイトマップ
HOME > strtotime()でmonth処理

strtotime()でmonth処理


strtotime()でmonth処理の注意点

starftimeで-1 month:はるみんち
【PHP TIPS】 6. strtotimeの落とし穴
上記の記事にあるように、strtotime()でmonthの足し引きを行いまんまと落とし穴にはまってしまいました。
いわゆる西向く士(2,4,6,9,11)月がらみの落とし穴です。


2006-03-31から先月末日を取得せよ

[失敗例]
<?php
$timestamp = strtotime('2006-03-31 -1 month');
echo date('Y-m-t',  $timestamp);
?>
結果:2006-03-31

[成功例]
<?php
$timestamp = strtotime('2006-03-31');
$now = date('Y-m-01',$timestamp);
 
$timestamp = strtotime($now.' -1 month');
echo date('Y-m-t',  $timestamp);
?>
結果:2006-02-28


考察

冷静に考えれば、strtotime()は忠実に仕事をしています。

'2006-03-31' -1 month = '2006-02-31'
'2006-02-31' = '2006-03-03'

ということで、2006-03-03の月の日数は31日で全く持って正しい。


落とし穴は「month(s)」です。
31日という日付部分をすっかり忘れて、てっきり先月と錯覚してしまいます。

例では'Y-m-01'と1日を指定していますが、1日~28日であればなんでもよいわけです。

このあまりに使い勝手のよいstrtotime()だからこその落とし穴のように感じます。


<<暗号化と復号化
PHP Tips

PHPリング

@PHP.ring Home
<5 <1 Random List 1> 5>

rktSQLite

  • sourceforge.jp

広告


アマゾン検索

サーチ:
Amazon.co.jpアソシエイト

カテゴリ

  •  Templateエンジンのすすめ Templateエンジンのすすめ
  •  SQLiteをやってみよう SQLiteをやってみよう
  •  SQLite SQLコマンド一覧 SQLiteコマンド一覧
  •  SQLite 管理プログラムSQLite 管理
  •  はじめてのEclipse はじめてのEclipse
  •  PHP SQLiteのTIPS PHP SQLiteのTIPS
  •  サンプル サンプル/ダウンロード
  •  リンク リンク
  •  掲示板 掲示板

メニュー

  •  incoude pathを通す
  •  カレンダー
  •  排他処理
  •  PEAR DB
  •  画像アップロード
  •  プログレスバー
  •  PATH_INFOで拡張子を隠す
  •  トラックバック
  •  PEARのトラックバック
  •  iMagickでGIFアニメ
  •  メモリ上の画像をImageMagickする
  •  暗号化と復号化
  •  strtotime()でmonth処理

キーワード検索

キーワード



最近のTB

  •  2006/03/13さくらのブログに挑戦[rakutoネットブログ]
  •  2006/01/20レーザーチャートの作成方法[脳内研究所]

Summary

  •     ATOM(XML)
  •     RDF(XML)
  •     RSS0.92(XML)
  •     RSS2.0(XML)

Powered by

  •     PHP
  •     Smarty
  •     SQLite
  •     MySQL
Copyright (C) 2005 `rakuto.net' All Rights Reserved.