Register Register Member Login Member Login Member Login Forgot Password ??
PHP , ASP , ASP.NET, VB.NET, C#, Java , jQuery , Android , iOS , Windows Phone
 

Registered : 109,027

HOME > .NET Framework > Forum > อยากทราบวิธีหาจำนวนวันที่เป็นวันเฉพาะเช่นวันอาทิตย์ ระหว่างช่วงเวลา C# Window Form



 

อยากทราบวิธีหาจำนวนวันที่เป็นวันเฉพาะเช่นวันอาทิตย์ ระหว่างช่วงเวลา C# Window Form

 



Topic : 114348



โพสกระทู้ ( 5 )
บทความ ( 0 )



สถานะออฟไลน์




อยากทราบวิธีหาวันที่เป็นวันเฉพาะเช่น วันจันทร์ ในระหว่างช่วงเวลาอะครับ เช่น
จากวันที่ 1 ม.ค. ค.ศ. 1990
ถึงวันที่ 1 ม.ค. ค.ศ. 2015
อยากทราบจำนวนวันจันทร์ในช่วงเวลานี้ว่ามีทั้งหมดกี่วัน

ผมใช้ค่าจาก TimePicker 2 อันอะครับ
โชว์ที่ Textbox เมื่อกด Button



Tag : .NET, C#, VS 2010 (.NET 4.x)









ประวัติการแก้ไข
2015-02-10 23:21:38
Move To Hilight (Stock) 
Send To Friend.Bookmark.
Date : 2015-02-10 23:21:01 By : kapnakab View : 2540 Reply : 4
 

 

No. 1

Guest


มีหลายวิธี 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 : หน้าฮี
 


 

No. 2

Guest


จริงๆมันเขียนไม่กี่บรรทัดก็จบแต่จะงง คนเขียนยังงงเลย
เลยกระจายออกมาก็ยังงงอยู่ดี หุหุ
แต่มันน่าจะเร็วเพราะไม่มี 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}
 

 

No. 3



โพสกระทู้ ( 74,058 )
บทความ ( 838 )

สมาชิกที่ใส่เสื้อไทยครีเอท

สถานะออฟไลน์
Twitter Facebook

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
 


 

No. 4

Guest


กระทู้นี้ผมชอบคำตอบของคุณหน้าฮีมากสุดเลย 555
โค้ดมันกระชับและดูง่าย
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2017-08-03 15:42:22 By : tester
 

   

ค้นหาข้อมูล


   
 

แสดงความคิดเห็น
Re : อยากทราบวิธีหาจำนวนวันที่เป็นวันเฉพาะเช่นวันอาทิตย์ ระหว่างช่วงเวลา C# Window Form
 
 
รายละเอียด
 
ตัวหนา ตัวเอียง ตัวขีดเส้นใต้ ตัวมีขีดกลาง| ตัวเรืองแสง ตัวมีเงา ตัวอักษรวิ่ง| จัดย่อหน้าอิสระ จัดย่อหน้าชิดซ้าย จัดย่อหน้ากึ่งกลาง จัดย่อหน้าชิดขวา| เส้นขวาง| ขนาดตัวอักษร แบบตัวอักษร
ใส่แฟลช ใส่รูป ใส่ไฮเปอร์ลิ้งค์ ใส่อีเมล์ ใส่ลิ้งค์ FTP| ใส่แถวของตาราง ใส่คอลัมน์ตาราง| ตัวยก ตัวห้อย ตัวพิมพ์ดีด| ใส่โค้ด ใส่การอ้างถึงคำพูด| ใส่ลีสต์
smiley for :lol: smiley for :ken: smiley for :D smiley for :) smiley for ;) smiley for :eek: smiley for :geek: smiley for :roll: smiley for :erm: smiley for :cool: smiley for :blank: smiley for :idea: smiley for :ehh: smiley for :aargh: smiley for :evil:
Insert PHP Code
Insert ASP Code
Insert VB.NET Code Insert C#.NET Code Insert JavaScript Code Insert C#.NET Code
Insert Java Code
Insert Android Code
Insert Objective-C Code
Insert XML Code
Insert SQL Code
Insert Code
เพื่อความเรียบร้อยของข้อความ ควรจัดรูปแบบให้พอดีกับขนาดของหน้าจอ เพื่อง่ายต่อการอ่านและสบายตา และตรวจสอบภาษาไทยให้ถูกต้อง

อัพโหลดแทรกรูปภาพ

Notice

เพื่อความปลอดภัยของเว็บบอร์ด ไม่อนุญาติให้แทรก แท็ก [img]....[/img] โดยการอัพโหลดไฟล์รูปจากที่อื่น เช่นเว็บไซต์ ฟรีอัพโหลดต่าง ๆ
อัพโหลดแทรกรูปภาพ ให้ใช้บริการอัพโหลดไฟล์ของไทยครีเอท และตัดรูปภาพให้พอดีกับสกรีน เพื่อความโหลดเร็วและไฟล์ไม่ถูกลบทิ้ง

   
  เพื่อความปลอดภัยและการตรวจสอบ กระทู้ที่แทรกไฟล์อัพโหลดไฟล์จากที่อื่น อาจจะถูกลบทิ้ง
 
โดย
อีเมล์
บวกค่าให้ถูก
<= ตัวเลขฮินดูอารบิก เช่น 123 (หรือล็อกอินเข้าระบบสมาชิกเพื่อไม่ต้องกรอก)







Exchange: นำเข้าสินค้าจากจีน, Taobao, เฟอร์นิเจอร์, ของพรีเมี่ยม, ร่ม, ปากกา, power bank, แฟลชไดร์ฟ, กระบอกน้ำ

Load balance : Server 05
ThaiCreate.Com Logo
© www.ThaiCreate.Com. 2003-2024 All Rights Reserved.
ไทยครีเอทบริการ จัดทำดูแลแก้ไข Web Application ทุกรูปแบบ (PHP, .Net Application, VB.Net, C#)
[Conditions Privacy Statement] ติดต่อโฆษณา 081-987-6107 อัตราราคา คลิกที่นี่