回答編集履歴

2

関数名の修正

2018/06/14 04:57

投稿

takabosoft
takabosoft

スコア8356

test CHANGED
@@ -24,13 +24,13 @@
24
24
 
25
25
  var target = new DateTime(nYear, nMonth, nDay, nHour, 0, 0);
26
26
 
27
- Debug.WriteLine($"{target} の直近の {nTargetHour:00}:00 は {GetNearestHour(target, nTargetHour)}");
27
+ Debug.WriteLine($"{target} の直近の {nTargetHour:00}:00 は {GetPastLatestHour(target, nTargetHour)}");
28
28
 
29
29
  }
30
30
 
31
31
 
32
32
 
33
- internal static DateTime GetNearestHour(DateTime target, int nHour)
33
+ internal static DateTime GetPastLatestHour(DateTime target, int nHour)
34
34
 
35
35
  {
36
36
 

1

問題を理解していませんでした。

2018/06/14 04:57

投稿

takabosoft
takabosoft

スコア8356

test CHANGED
@@ -1,13 +1,65 @@
1
+ 質問の内容を間違えて読み取ってしまったので修正します。
2
+
1
- おそらくこう書け期待通りでしょうか?
3
+ 今日のN時か昨日のN時かを返せ良いと思います。
2
4
 
3
5
 
4
6
 
5
7
  ```csharp
6
8
 
7
- var now = DateTime.Now;
9
+ private void button1_Click(object sender, EventArgs e)
8
10
 
9
- var date = new DateTime(now.Year, now.Month, now.Day, 13, 0, 0);
11
+ {
10
12
 
13
+ Test(2018, 6, 14, 12, 13);
14
+
15
+ Test(2018, 6, 14, 14, 13);
16
+
17
+ }
18
+
19
+
20
+
21
+ internal static void Test(int nYear, int nMonth, int nDay, int nHour, int nTargetHour)
22
+
23
+ {
24
+
25
+ var target = new DateTime(nYear, nMonth, nDay, nHour, 0, 0);
26
+
27
+ Debug.WriteLine($"{target} の直近の {nTargetHour:00}:00 は {GetNearestHour(target, nTargetHour)}");
28
+
29
+ }
30
+
31
+
32
+
33
+ internal static DateTime GetNearestHour(DateTime target, int nHour)
34
+
35
+ {
36
+
37
+ var sameDay = new DateTime(target.Year, target.Month, target.Day, nHour, 0, 0);
38
+
39
+
40
+
41
+ if (sameDay <= target)
42
+
43
+ {
44
+
45
+ return sameDay; // 同じ日のnHour時
46
+
47
+ }
48
+
11
- System.Diagnostics.Debug.WriteLine(date); // 2018/06/14 13:00:00
49
+ return sameDay - TimeSpan.FromDays(1); // 一日前のnHour時
50
+
51
+ }
12
52
 
13
53
  ```
54
+
55
+
56
+
57
+ 出力:
58
+
59
+ ```text
60
+
61
+ 2018/06/14 12:00:00 の直近の 13:00 は 2018/06/13 13:00:00
62
+
63
+ 2018/06/14 14:00:00 の直近の 13:00 は 2018/06/14 13:00:00
64
+
65
+ ```