Share this article on your facebook
จากบทความก่อนๆ ที่ผมเคยเขียนเกี่ยวกับ ฟังก์ชั่นหาวันแรกและวันสุดท้ายของเดือน (Get first and last day of month) ซึ่งเป็น Function ที่สร้างขึ้นไว้ใช้งานเอง แต่วันนี้ผมเจอเว็บของคุณ Fredrik Kalseth ผู้ที่ขยายความสามารถให้ System.DateTime ให้มีฟังก์ชันเหล่านั้นไว้ รวมทั้งอีกหลายๆ ฟังก์ชันที่เราใช้บ่อยๆ มาลองดูตัวอย่างกันครับ (ตัวอย่างข้างล่างทั้งหมด return เป็น DateTime object นะครับ มือใหม่บางคนอาจเข้าใจผิดว่าจะreturn เป็นอักษรวันที่ ซึ่งถ้าอยากได้แบบนั้นจริงๆ ก็ค่อยแปลง DateTime เป็น String อีกทีครับ)
'หาวันแรกของเดือนนี้
Now.First()
'หาวันจันทร์แรกของเดือนนี้
Now.First(DayOfWeek.Monday)
'หาวันสุดท้ายของเดือนนี้
Now.Last()
'หาวันศุกร์สุดท้ายของเดือนนี้
Now.Last(DayOfWeek.Friday)
'หาวันจันทร์ถัดไปจากวันนี้
Now.Next(DayOfWeek.Monday)
'กำหนดค่าเป็น วันนี้เวลา 17.30 น.
Now.SetTime(17, 30)
'ฟังก์ชัน SetTime มี overload 4 ตัว ให้กำหนดค่าตั้งแต่ชั่วโมงจนถึงมิลลิวินาที
SetTime(hour)
SetTime(hour, minute)
SetTime(hour, minute, second)
SetTime(hour, minute, second, millisecond)
หลังเห็นแล้วว่าน่าใช้ ขั้นต่อไปก็ไปโหลด assembly ที่ชื่อ DateTimeExtensions.dll จาก http://www.codeplex.com/DateTimeExtensions ขนาดเพียง 5 kB
เสร็จก็ add reference เข้ามาในโปรเจ็คของเรา ก็เป็นอันใช้งานได้
ช่วยลดโค้ดลงได้นิดหน่อย แบบนี้ถ้ามีคนใช้เยอะๆ ก็อยากให้ไมโครซอฟต์บรรจุฟังก์ชันเหล่านี้ลงไปใน DateTime มาตรฐานเลย..
แหล่งข้อมูลเพิ่มเติม :
DateTimeExtensions (www.CodePlex.com)
A Set of Useful Extension Methods for DateTime (Fredrik Kalseth Blog)
VB.NET Blog แหล่งความรู้ บทความเกี่ยวกับ Visual Basic.NET สำหรับคนไทย โดยนำเสนอตั้งแต่ Syntac เบื้องต้น จนถึงเทคนิคการเขียนโปรแกรม ตลอดจน Pattern ในการออกแบบซอฟท์แวร์ขนาดใหญ่ และติวสอบ Microsoft Certificated Professional
วันอังคารที่ ๑๘ สิงหาคม พ.ศ. ๒๕๕๒
วันจันทร์ที่ ๑๑ พฤษภาคม พ.ศ. ๒๕๕๒
ส่งอีเมล์บน .NET 2.0 (Sending e-mail with .NET 2.0)
เรื่องการเขียนโปรแกรมส่ง e-mail ก็เป็นงานที่ต้องเจอบ่อยๆ ครับ พอดีมีคนถามเข้ามาเลยจะพยายามรวบรวมวิธีการส่งอีเมล์แบบต่างๆ มาให้ดูครับ เดิมทีใน .NET เวอร์ชั่น 1.0/1.1 กลุ่มคลาสที่เกี่ยวกับอีเมล์จะอยู่ในเนมสเปส System.Web.Mail ซึ่งไมโครซอฟท์คงพิจารณาแล้วว่า ไม่เหมาะสมแน่ถ้าให้คลาสเกี่ยวกับอีเมล์อยู่ใน System.Web เพราะมีความหมายเป็นนัยว่างานด้านอีเมล์เกี่ยวกับงานเว็บเท่านั้น ทำให้เวลาพัฒนา win app., console ฯลฯ ต้อง add reference มาเสมอ ดังนั้นใน .NET เวอร์ชั่น 2.0 ทางไมโครซอฟท์จึงเปลี่ยนให้คลาสเกี่ยวกับอีเมล์ทั้งหมดไปอยู่ในเนมสเปส System.Net เป็นการบอกว่า งานด้านอีเมล์เป็นงานด้าน network ดังนั้นเวลาอ้างเนมสเปสจึงใช้เป็น System.Net.Mail แทน ซึ่งดูเหมาะสมดีครับ
ชื่อ SMTP server ใช้ IP แทนก็ได้นะครับ
กรณีที่ SMTP server มีการตรวจสอบสิทธิ์ ก็ให้เพิ่มโค้ดในส่วน SmtpClient เป็น
ถ้า SMTP Server กำหนดให้ใช้ SSL\TLS (SSL ใช้ port หมายเลข 465 ,TLS ใช้ port หมายเลข 587) เพิ่ม properties ใช้อ็อบเจ็คดังนี้
บางคนอาจจำเป็นต้องเปลี่ยน SMTP บ่อยๆ หรือเปลี่ยน SMTP User บ่อยๆ ก็อาจจะระบุรายละเอียดของ SMTP Server ไว้ใน Web.config หรือ app.config เลยก็ได้ครับ
แหล่งข้อมูล :
ASPAlliance.com
dotnetcurry.com
DaniWeb
velocityreviews
SMTP gmail outlook
SMTP gmail Thunderbird 2.0
geekswithblogs.net
astahost.com
Imports System.Net .... Dim Mail As New MailMessage() Mail.To.Add(New MailAddress("TO1@email.com")) Mail.To.Add(New MailAddress("TO2@email.com")) .... Mail.CC.Add(New MailAddress("CC1@email.com")) Mail.CC.Add(New MailAddress("CC2@email.com")) .... Mail.BCC.Add(New MailAddress("BCC1@email.com")) Mail.BCC.Add(New MailAddress("BCC2@email.com")) .... Mail.From = New MailAddress("FROM@email.com") Mail.Subject = "......" Mail.Body = "......" Mail.IsBodyHtml = True Dim Smtp As New SmtpClient("smtp.email.com") Smtp.Send(Mail)
ชื่อ SMTP server ใช้ IP แทนก็ได้นะครับ
กรณีที่ SMTP server มีการตรวจสอบสิทธิ์ ก็ให้เพิ่มโค้ดในส่วน SmtpClient เป็น
Dim Smtp As New SmtpClient("smtp.email.com") Smtp.DeliveryMethod = SmtpDeliveryMethod.Network Smtp.Credentials = New NetworkCredential("UserName", "Password") Smtp.Send(Mail)
ถ้า SMTP Server กำหนดให้ใช้ SSL\TLS (SSL ใช้ port หมายเลข 465 ,TLS ใช้ port หมายเลข 587) เพิ่ม properties ใช้อ็อบเจ็คดังนี้
Dim Smtp As New SmtpClient("smtp.email.com") Smtp.DeliveryMethod = SmtpDeliveryMethod.Network Smtp.Credentials = New NetworkCredential("UserName", "Password") Smtp.EnableSsl = True Smtp.Port = 587 '465 Smtp.Send(Mail)
บางคนอาจจำเป็นต้องเปลี่ยน SMTP บ่อยๆ หรือเปลี่ยน SMTP User บ่อยๆ ก็อาจจะระบุรายละเอียดของ SMTP Server ไว้ใน Web.config หรือ app.config เลยก็ได้ครับ
<configuration> .... <system.net> <mailsettings> <smtp deliverymethod="Network"> <network host="smtp.email.com" username="..." password="..." port="..." /> </smtp> </mailsettings> </system.net> .... </configuration><-- บทความกำลังเขียนต่อ -->
แหล่งข้อมูล :
ASPAlliance.com
dotnetcurry.com
DaniWeb
velocityreviews
SMTP gmail outlook
SMTP gmail Thunderbird 2.0
geekswithblogs.net
astahost.com
วันศุกร์ที่ ๒๐ มีนาคม พ.ศ. ๒๕๕๒
ฟังก์ชั่นหาวันแรกและวันสุดท้ายของเดือน (Get first and last day of month)
คำว่าวันสุดท้ายของเดือนในที่นี้ หมายถึงวันใน data type แบบ DateTime (หรือ Date) นะครับ ไม่ใช่หมายถึงเดือนนั้นมีกี่วัน เพราะถ้าหาเดือนนั้นมีกี่วันก็แค่ใช้ Method ชื่อ DaysInMonth (พร้อมระบุปีเดือน) ก็ได้คำตอบแล้ว โค้ดข้างล่างเป็นตัวอย่างแนวทางการหาคำตอบเท่านั้น เพราะที่จริงสามารถพลิกแพลงได้หลายวิธีครับ ลองดูกันเลยครับ
first day of month - eggheadcafe
First and Last Day Of Month - vbforums
'VB.NET 'หาวันแรกของเดือน จากวันปัจจุบัน Function GetFirstDayOfMonth(ByVal CurrentDate As DateTime) As DateTime Return (New DateTime(CurrentDate.Year, CurrentDate.Month, 1)) End Function
'หาวันแรกของเดือน ที่เป็นวันทำงาน (จันทร์-ศุกร์) จากวันปัจจุบัน Function GetFirstWorkingDayOfMonth(ByVal CurrentDate As DateTime) As DateTime With New DateTime(CurrentDate.Year, CurrentDate.Month, 1) If .DayOfWeek = DayOfWeek.Saturday Then Return .AddDays(2) ElseIf .DayOfWeek = DayOfWeek.Sunday Then Return .AddDays(1) Else Return .AddDays(0) End If End With End Function
'หาวันสุดท้ายของเดือน จากวันปัจจุบัน Function GetLastDayOfMonth(ByVal CurrentDate As DateTime) As DateTime With CurrentDate Return (New DateTime(.Year, .Month, Date.DaysInMonth(.Year, .Month))) End With End Functionแหล่งข้อมูล :
first day of month - eggheadcafe
First and Last Day Of Month - vbforums
สมัครสมาชิก:
บทความ (Atom)