質問編集履歴

4

コードミス修正

2017/03/01 11:25

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -12,7 +12,7 @@
12
12
 
13
13
  $begin_date = $now;
14
14
 
15
- $begin->sub(new DateInterval('P1M'));
15
+ $begin_date->sub(new DateInterval('P1M'));
16
16
 
17
17
  echo $begin_date->format('Ymd');
18
18
 

3

加筆修正

2017/03/01 11:25

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -6,7 +6,7 @@
6
6
 
7
7
  ```php
8
8
 
9
- // 1前の日付を得る
9
+ // 1前の日付を得る
10
10
 
11
11
  $now = new DateTime();
12
12
 
@@ -15,6 +15,8 @@
15
15
  $begin->sub(new DateInterval('P1M'));
16
16
 
17
17
  echo $begin_date->format('Ymd');
18
+
19
+ // 1日前の日付を得る
18
20
 
19
21
  $end_date = $now;
20
22
 

2

例示コードの差し替え

2017/03/01 11:23

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -1,4 +1,6 @@
1
1
  こんなコードを書いてみました。
2
+
3
+ (質問ようにコンパクトにしてしまったために再現しなくなっていたので、元のコードに差し替えました。)
2
4
 
3
5
 
4
6
 
@@ -7,6 +9,12 @@
7
9
  // 1日前の日付を得る
8
10
 
9
11
  $now = new DateTime();
12
+
13
+ $begin_date = $now;
14
+
15
+ $begin->sub(new DateInterval('P1M'));
16
+
17
+ echo $begin_date->format('Ymd');
10
18
 
11
19
  $end_date = $now;
12
20
 
@@ -18,11 +26,13 @@
18
26
 
19
27
 
20
28
 
21
- 今日は2017年3月1日なので、「20170228」という出力が得られるものと期待しましたが、「20170131」が得られました。
29
+ 今日は2017年3月1日なので、end_dateは「20170228」という出力が得られるものと期待しましたが、「20170131」が得られました。
22
30
 
23
31
 
24
32
 
25
33
  DateTimeクラスやDateIntervalクラスって本当に大丈夫なんでしょうか。
34
+
35
+ もしかして、$nowも$begin_dateも$end_dateも繋がっちゃってますかね。
26
36
 
27
37
 
28
38
 

1

ブログ記事の引用を追加

2017/03/01 11:23

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -33,3 +33,25 @@
33
33
 
34
34
 
35
35
  [前日日付などを取得する方法 - Chocotte de Choo](http://d.hatena.ne.jp/Choo/20090309/1236674427)
36
+
37
+
38
+
39
+ ```php
40
+
41
+ date("Ymd",strtotime("-1 day")); //1日前
42
+
43
+ date("Ymd",strtotime("-1 week")); //1週間前
44
+
45
+ date("Ymd",strtotime("-1 month")); //1月前
46
+
47
+ date("Ymd",strtotime("-1 year")); //1年前
48
+
49
+ date("Ymd",strtotime("1 day")); //1日後
50
+
51
+ date("Ymd",strtotime("1 week")); //1週間後
52
+
53
+ date("Ymd",strtotime("1 month")); //1月後
54
+
55
+ date("Ymd",strtotime("1 year")); //1年後
56
+
57
+ ```