質問するログイン新規登録

質問編集履歴

4

コードミス修正

2017/03/01 11:25

投稿

退会済みユーザー
title CHANGED
File without changes
body CHANGED
@@ -5,7 +5,7 @@
5
5
  // 1月前の日付を得る
6
6
  $now = new DateTime();
7
7
  $begin_date = $now;
8
- $begin->sub(new DateInterval('P1M'));
8
+ $begin_date->sub(new DateInterval('P1M'));
9
9
  echo $begin_date->format('Ymd');
10
10
  // 1日前の日付を得る
11
11
  $end_date = $now;

3

加筆修正

2017/03/01 11:25

投稿

退会済みユーザー
title CHANGED
File without changes
body CHANGED
@@ -2,11 +2,12 @@
2
2
  (質問ようにコンパクトにしてしまったために再現しなくなっていたので、元のコードに差し替えました。)
3
3
 
4
4
  ```php
5
- // 1前の日付を得る
5
+ // 1前の日付を得る
6
6
  $now = new DateTime();
7
7
  $begin_date = $now;
8
8
  $begin->sub(new DateInterval('P1M'));
9
9
  echo $begin_date->format('Ymd');
10
+ // 1日前の日付を得る
10
11
  $end_date = $now;
11
12
  $end_date->sub(new DateInterval('P1D'));
12
13
  echo $end_date->format('Ymd');

2

例示コードの差し替え

2017/03/01 11:23

投稿

退会済みユーザー
title CHANGED
File without changes
body CHANGED
@@ -1,16 +1,21 @@
1
1
  こんなコードを書いてみました。
2
+ (質問ようにコンパクトにしてしまったために再現しなくなっていたので、元のコードに差し替えました。)
2
3
 
3
4
  ```php
4
5
  // 1日前の日付を得る
5
6
  $now = new DateTime();
7
+ $begin_date = $now;
8
+ $begin->sub(new DateInterval('P1M'));
9
+ echo $begin_date->format('Ymd');
6
10
  $end_date = $now;
7
11
  $end_date->sub(new DateInterval('P1D'));
8
12
  echo $end_date->format('Ymd');
9
13
  ```
10
14
 
11
- 今日は2017年3月1日なので、「20170228」という出力が得られるものと期待しましたが、「20170131」が得られました。
15
+ 今日は2017年3月1日なので、end_dateは「20170228」という出力が得られるものと期待しましたが、「20170131」が得られました。
12
16
 
13
17
  DateTimeクラスやDateIntervalクラスって本当に大丈夫なんでしょうか。
18
+ もしかして、$nowも$begin_dateも$end_dateも繋がっちゃってますかね。
14
19
 
15
20
  結果的に、下記のブログ記事を見つけて対応したので問題なしですが、少し気味が悪いです。
16
21
  (テスト環境は、XAMPP-Windowsに含まれているPHP 5.4.16)

1

ブログ記事の引用を追加

2017/03/01 11:23

投稿

退会済みユーザー
title CHANGED
File without changes
body CHANGED
@@ -15,4 +15,15 @@
15
15
  結果的に、下記のブログ記事を見つけて対応したので問題なしですが、少し気味が悪いです。
16
16
  (テスト環境は、XAMPP-Windowsに含まれているPHP 5.4.16)
17
17
 
18
- [前日日付などを取得する方法 - Chocotte de Choo](http://d.hatena.ne.jp/Choo/20090309/1236674427)
18
+ [前日日付などを取得する方法 - Chocotte de Choo](http://d.hatena.ne.jp/Choo/20090309/1236674427)
19
+
20
+ ```php
21
+ date("Ymd",strtotime("-1 day")); //1日前
22
+ date("Ymd",strtotime("-1 week")); //1週間前
23
+ date("Ymd",strtotime("-1 month")); //1月前
24
+ date("Ymd",strtotime("-1 year")); //1年前
25
+ date("Ymd",strtotime("1 day")); //1日後
26
+ date("Ymd",strtotime("1 week")); //1週間後
27
+ date("Ymd",strtotime("1 month")); //1月後
28
+ date("Ymd",strtotime("1 year")); //1年後
29
+ ```