 |
|
อยากทราบวิธีหาจำนวนวันที่เป็นวันเฉพาะเช่นวันอาทิตย์ ระหว่างช่วงเวลา C# Window Form |
|
 |
|
|
 |
 |
|
มีหลายวิธี 1., 2., 3., ..., n
จากหนึ่งในหลายหลาย ใช้ LINQ (เรียงคิว)
Code (C#)
DateTime sDate= new DateTime(2015,01,01);
DateTime eDate = new DateTime(2015, 01, 31);
var ห = Enumerable.Range(0, (eDate - sDate).Days + 1).Select(อ => sDate.AddDays(อ)).Where(ย => ย.DayOfWeek == DayOfWeek.Friday).Count();
|
 |
 |
 |
 |
Date :
2015-02-11 05:43:23 |
By :
หน้าฮี |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
จริงๆมันเขียนไม่กี่บรรทัดก็จบแต่จะงง คนเขียนยังงงเลย
เลยกระจายออกมาก็ยังงงอยู่ดี หุหุ
แต่มันน่าจะเร็วเพราะไม่มี loop
ปล.แกะมาจากสูตร excel
Code (VB.NET)
Dim result As Integer = 0
Dim iStr As String = String.Empty
Dim need2CountDay As DayOfWeek = DayOfWeek.Thursday
Dim FromDate As New Date(2015, 1, 1)
Dim ToDate As New Date(2015, 1, 30)
Dim startADay As DayOfWeek = FromDate.DayOfWeek
Dim totalDayRange As Integer = (ToDate - FromDate).TotalDays 'หาจำนวนวันทั้งหมดในช่วง
'เลื่อนวันแรกด้วยวันที่อยากได้กับวันแรก งงมั้ย
Dim AdjustDay As Integer = (7 + need2CountDay - startADay) Mod 7
Dim oddDay As Integer = totalDayRange Mod 7 'เศษวันของสัปดาห์ที่เหลือจากช่วงวันทั้งหมด
result = (totalDayRange) / 7
Dim AddWeek = IIf(oddDay > AdjustDay, 1, 0)
result = result + AddWeek
Dim cultureInfo = New CultureInfo("th-TH")
Dim dateTimeInfo = cultureInfo.DateTimeFormat
iStr = String.Format("วัน «{0}» ทั้งหมด จาก «{1}» ถึง «{2}» มี «{3}» วัน นะแจ๊ะ" _
, dateTimeInfo.GetDayName(need2CountDay) _
, FromDate.ToString("ddd d/MMM/yy", cultureInfo) _
, ToDate.ToString("ddd d/MMM/yy", cultureInfo), result.ToString())
Response.Write(iStr)
output:
Code
วัน «พฤหัสบดี» ทั้งหมด จาก «พฤ. 1/ม.ค./58» ถึง «ศ. 30/ม.ค./58» มี «5» วัน นะแจ๊ะ
|
 |
 |
 |
 |
Date :
2015-02-11 13:06:44 |
By :
DOG{B} |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
Code (C#)
int result = 0;
string iStr = string.Empty;
DayOfWeek need2CountDay = DayOfWeek.Thursday;
System.DateTime FromDate = new System.DateTime(2015, 1, 1);
System.DateTime ToDate = new System.DateTime(2015, 1, 30);
DayOfWeek startADay = FromDate.DayOfWeek;
int totalDayRange = (ToDate - FromDate).TotalDays;
//หาจำนวนวันทั้งหมดในช่วง
//เลื่อนวันแรกด้วยวันที่อยากได้กับวันแรก งงมั้ย
int AdjustDay = (7 + need2CountDay - startADay) % 7;
int oddDay = totalDayRange % 7;
//เศษวันของสัปดาห์ที่เหลือจากช่วงวันทั้งหมด
result = (totalDayRange) / 7;
dynamic AddWeek = (oddDay > AdjustDay ? 1 : 0);
result = result + AddWeek;
dynamic cultureInfo = new CultureInfo("th-TH");
dynamic dateTimeInfo = cultureInfo.DateTimeFormat;
iStr = string.Format("วัน «{0}» ทั้งหมด จาก «{1}» ถึง «{2}» มี «{3}» วัน นะแจ๊ะ", dateTimeInfo.GetDayName(need2CountDay), FromDate.ToString("ddd d/MMM/yy", cultureInfo), ToDate.ToString("ddd d/MMM/yy", cultureInfo), result.ToString());
Response.Write(iStr);
|
 |
 |
 |
 |
Date :
2015-02-11 13:25:55 |
By :
mr.win |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
กระทู้นี้ผมชอบคำตอบของคุณหน้าฮีมากสุดเลย 555
โค้ดมันกระชับและดูง่าย
|
 |
 |
 |
 |
Date :
2017-08-03 15:42:22 |
By :
tester |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
|
|