some code about date.welcome correct!
Some day, in my project need to get the moth, weekly,quarter and others. So i write some code to meet that ,then i put them to my blog. Hopt to help somebody need it!
1
public class AboutDate
2
{
3
public AboutDate()
4
{
5
//
6
// TODO: Add constructor logic here
7
//
8
}
9![]()
10
/// <summary>
11
/// 取得近10年的数据
12
/// </summary>
13
/// <param name="info">
14
/// 偏移量(info为n,则包含 当前年+n 的年份)
15
/// </param>
16
/// <returns>
17
/// DataSet
18
///</returns>
19![]()
20
public DataSet GetYearData(int info)
21
{
22
DataSet dataSet = new DataSet();
23
dataSet.Tables.Add();
24
dataSet.Tables[0].Columns.Add("YearText");
25
dataSet.Tables[0].Columns.Add("YearValue");
26![]()
27
for (int i = 10; i >= 0; i--)
28
{
29
DataRow dataRow = dataSet.Tables[0].NewRow();
30
dataRow["YearText"] = DateTime.Now.Year - i + info;
31
dataRow["YearValue"] = DateTime.Now.Year - i + info;
32
dataSet.Tables[0].Rows.Add(dataRow);
33
}
34
return dataSet;
35
}
36![]()
37
/// <summary>
38
/// 取得季度数据
39
/// </summary>
40
/// <returns>
41
/// DataSet
42
/// </returns>
43
public DataSet GetQuarterData()
44
{
45
DataSet dataSet = new DataSet();
46
dataSet.Tables.Add();
47
dataSet.Tables[0].Columns.Add("QuarterText");
48
dataSet.Tables[0].Columns.Add("QuarterValue");
49
DataRow dataRow1 = dataSet.Tables[0].NewRow();
50
DataRow dataRow2 = dataSet.Tables[0].NewRow();
51
DataRow dataRow3 = dataSet.Tables[0].NewRow();
52
DataRow dataRow4 = dataSet.Tables[0].NewRow();
53![]()
54
dataRow1["QuarterText"] = "第一季度";
55
dataRow1["QuarterValue"] = "1";
56![]()
57
dataRow2["QuarterText"] = "第二季度";
58
dataRow2["QuarterValue"] = "2";
59![]()
60
dataRow3["QuarterText"] = "第三季度";
61
dataRow3["QuarterValue"] = "3";
62![]()
63
dataRow4["QuarterText"] = "第四季度";
64
dataRow4["QuarterValue"] = "4";
65![]()
66
dataSet.Tables[0].Rows.Add(dataRow1);
67
dataSet.Tables[0].Rows.Add(dataRow2);
68
dataSet.Tables[0].Rows.Add(dataRow3);
69
dataSet.Tables[0].Rows.Add(dataRow4);
70
return dataSet;
71
}
72![]()
73
/// <summary>
74
/// 取得月份数据,每年12个月
75
/// </summary>
76
/// <returns>
77
/// DataSet
78
/// </returns>
79
public DataSet GetMonthData()
80
{
81
DataSet dataSet = new DataSet();
82
dataSet.Tables.Add();
83
dataSet.Tables[0].Columns.Add("MonthText");
84
dataSet.Tables[0].Columns.Add("MonthValue");
85![]()
86
for (int i = 0; i < 12; i++)
87
{
88
DataRow dataRow = dataSet.Tables[0].NewRow();
89
dataRow["MonthText"] = i + 1;
90
dataRow["MonthValue"] = ((int)(i + 1)).ToString("00");
91
dataSet.Tables[0].Rows.Add(dataRow);
92
}
93
return dataSet;
94
}
95
96
/// <summary>
97
/// 取得某年周数据
98
/// </summary>
99
/// <param name="year">
100
/// 要取周数据的年份
101
/// </param>
102
/// <returns></returns>
103
public DataSet GetWeekData(string year)
104
{
105
DataSet dataSet = new DataSet();
106
dataSet.Tables.Add();
107
dataSet.Tables[0].Columns.Add("WeekText");
108
dataSet.Tables[0].Columns.Add("WeekValue");
109![]()
110
//取得当年周数
111
int OneYearDays = (System.DateTime.IsLeapYear(Convert.ToInt32(year))) ? 366 : 365;
112
int weeks = Convert.ToInt32((double)System.Math.Ceiling((OneYearDays - FirstWeek(year)) / 7)) + 1;
113
for (int i = 0; i <= weeks; i++)
114
{
115
DataRow dataRow = dataSet.Tables[0].NewRow();
116
dataRow["WeekText"] = "第" + (i + 1) + "周";
117
dataRow["WeekValue"] = ((int)(i + 1)).ToString("000");
118
dataSet.Tables[0].Rows.Add(dataRow);
119
}
120![]()
121
return dataSet;
122
}
123
124
/// <summary>
125
/// 取得某年某周的第一天及第七天的日期
126
/// </summary>
127
/// <param name="WeekIndex">
128
/// 周序号
129
/// </param>
130
/// <param name="year">
131
/// 年份
132
/// </param>
133
/// <returns>
134
/// string[] 格式为yyyy/MM/dd
135
/// str[0] 为第一天的日期
136
/// str[1] 为第七天的日期
137
/// </returns>
138
public string[] GetStartAndEndDayByWeekIndex(int WeekIndex, string year)
139
{
140
int EndDaysIndex = 7 - FirstWeek(year) + 1 + 7 * (WeekIndex - 1);
141
EndDaysIndex = (EndDaysIndex > (System.DateTime.IsLeapYear(Convert.ToInt32(year)) ? 366 : 365)) ? (System.DateTime.IsLeapYear(Convert.ToInt32(year)) ? 366 : 365) : EndDaysIndex;
142
string EndDay = GetDay(EndDaysIndex, year);
143![]()
144
int StartDaysIndex = ((EndDaysIndex - 6) > 0) ? (EndDaysIndex - 6) : 1;
145
string StartDay = GetDay(StartDaysIndex, year);
146
string[] str = new string[2];
147
str[0] = StartDay;
148
str[1] = EndDay;
149
return str;
150
}
151![]()
152
153
/// <summary>
154
/// 根据月份得到其为第几季度
155
/// </summary>
156
/// <param name="month">
157
/// 月份
158
/// </param>
159
/// <returns>
160
/// 季度,值为 1,2,3,4
161
/// </returns>
162
public string GetQuarterByMonth(string month)
163
{
164
string quarter = null;
165
switch (month)
166
{
167
case "01":
168
case "02":
169
case "03":
170
quarter = "1";
171
break;
172
case "04":
173
case "05":
174
case "06":
175
quarter = "2";
176
break;
177
case "07":
178
case "08":
179
case "09":
180
quarter = "3";
181
break;
182
case "10":
183
case "11":
184
case "12":
185
quarter = "4";
186
break;
187
}
188
return quarter;
189
}
190![]()
191![]()
192
/// <summary>
193
/// 根据两个日期来判断是否为同一个月,输入的天数格式为yyyy/MM/dd
194
/// </summary>
195
/// <param name="day1">日期1</param>
196
/// <param name="day2">日期2</param>
197
/// <returns>
198
/// 若相同,则str[0] = true;str[1] = month
199
/// 若不同,则str[0] = false;str[1] = month1;str[2] = month2;
200
/// </returns>
201
202
public string[] GetMonthByDay(string day1, string day2)
203
{
204
string[] str = new string[3];
205
if (day1.Split('/')[1] == day2.Split('/')[1])
206
{
207
str[0] = "true";
208
str[1] = day1.Split('/')[1];
209
}
210
else
211
{
212
str[0] = "false";
213
str[1] = day1.Split('/')[1];
214
str[2] = day2.Split('/')[1];
215
}
216
return str;
217
}
218![]()
219
/// <summary>
220
/// 根据某年中的第daysindex天,取得那一天的日期,.
221
/// </summary>
222
/// <param name="DaysIndex">天数</param>
223
/// <param name="year">年份</param>
224
/// <returns>
225
/// 返回格式为yyyy/MM/dd
226
/// </returns>
227
private string GetDay(int DaysIndex, string year)
228
{
229
string date = null;
230![]()
231
for (int i = 1; i <= 12; i++)
232
{
233
for (int j = 1; j <= GetDayByMonth(year, i); j++)
234
{
235
if (Convert.ToDateTime(year + "/" + i.ToString("00") + "/" + j.ToString("00")).DayOfYear == DaysIndex)
236
{
237
date = year + "/" + i.ToString("00") + "/" + j.ToString("00");
238
break;
239
}
240
}
241
}
242
return date;
243
}
244
/// <summary>
245
/// 取得对应月份的天数
246
/// </summary>
247
/// <param name="year">年份</param>
248
/// <param name="month">月份</param>
249
/// <returns>
250
/// 天数
251
/// </returns>
252
private int GetDayByMonth(string year, int month)
253
{
254
int day = 0;
255
switch (month)
256
{
257
case 1:
258
case 3:
259
case 5:
260
case 7:
261
case 8:
262
case 10:
263
case 12:
264
day = 31;
265
break;
266
case 2:
267
day = System.DateTime.IsLeapYear(Convert.ToInt32(year)) ? 29 : 28;
268
break;
269
default:
270
day = 30;
271
break;
272
}
273
return day;
274
}
275![]()
276
/// <summary>
277
/// 取得某年第一天是周几
278
/// </summary>
279
/// <param name="year">年份</param>
280
/// <returns>
281
/// 返回数字。周一1,周日7
282
/// </returns>
283
private int FirstWeek(string year)
284
{
285
string date = year + "/01/01";
286
int day = 0;
287
switch (Convert.ToDateTime(date).DayOfWeek.ToString())
288
{
289
case "Monday":
290
day = 1;
291
break;
292
case "Thuesday":
293
day = 2;
294
break;
295
case "Wednesday":
296
day = 3;
297
break;
298
case "Thursday":
299
day = 4;
300
break;
301
case "Friday":
302
day = 5;
303
break;
304
case "Saturday":
305
day = 6;
306
break;
307
case "Sunday":
308
day = 7;
309
break;
310
default:
311
break;
312
}
313
return day;
314
}
315![]()
316
}

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

101

102

103

104

105

106

107

108

109

110

111

112

113

114

115

116

117

118

119

120

121

122

123

124

125

126

127

128

129

130

131

132

133

134

135

136

137

138

139

140

141

142

143

144

145

146

147

148

149

150

151

152

153

154

155

156

157

158

159

160

161

162

163

164

165

166

167

168

169

170

171

172

173

174

175

176

177

178

179

180

181

182

183

184

185

186

187

188

189

190

191

192

193

194

195

196

197

198

199

200

201

202

203

204

205

206

207

208

209

210

211

212

213

214

215

216

217

218

219

220

221

222

223

224

225

226

227

228

229

230

231

232

233

234

235

236

237

238

239

240

241

242

243

244

245

246

247

248

249

250

251

252

253

254

255

256

257

258

259

260

261

262

263

264

265

266

267

268

269

270

271

272

273

274

275

276

277

278

279

280

281

282

283

284

285

286

287

288

289

290

291

292

293

294

295

296

297

298

299

300

301

302

303

304

305

306

307

308

309

310

311

312

313

314

315

316

The code has build succeeded in vs2003.