1: เริ่มต้นกับ Carbon
1.1 บทนำ
เป็นแพ็กเกจที่เข้าใจง่ายและเป็นมิตรต่อนักพัฒนาในภาษาโปรแกรมกอลอง
ประโยชน์ของการใช้ Carbon สำหรับการจัดการช่วงเวลา:
- เป็นมิตรต่อนักพัฒนา: Carbon มีอินเทอร์เฟซที่ไหลไปด้วยการแก้ไขให้กับวันที่ที่ใกล้ชิดและการแสดงออกที่เข้าใจได้สำหรับนักพัฒนา
- สนับสนุนการเปลี่ยนเวลา: สนับสนุนการเปลี่ยนเวลาที่อนุรักษ์ไว้ด้วยการแสดงเป็นวันที่พื้นฐาน
- ความไม่เปลี่ยนแปลง: ตัวอย่างของ Carbon เป็นความไม่เปลี่ยนแปลงที่เป็นที่ความปลอดภัย นีย่าสามารถถูกส่งต่อไปอย่างปลอดภัยโดยไม่มีการแก้ไขที่ไม่คาดฝัน
- การจัดการโซนเวลา: Carbon ทำให้ความซับซ้อนของการจัดการวันที่จำกัดในโซนเวลาที่แตกต่างกันลดลง
- เริ่มต้น API: ให้ชุดคำสั่งที่ครอบคลุมมากขึ้นสำหรับสร้างฟังก์ชันการทำงานการําเพื่อกลุ่มดาวเวลาของ และการจัดรูปแบบวันและเวลา
1.2 คู่มือการติดตั้ง
การติดตั้งสำหรับ Go เวอร์ชั่น >= 1.16
เพื่อที่จะติดตั้งแพ็คเกจของ Carbon สำหรับ Go เวอร์ชั่น 1.16 หรือสูงกว่านั้น ให้ใช้คำสั่งต่อไปนี้:
go get -u github.com/golang-module/carbon/v2
จากนั้น นำแพ็คเกจเข้าไปในไฟล์ Go ของคุณ:
import "github.com/golang-module/carbon/v2"
การติดตั้งสำหรับ Go เวอร์ชั่น < 1.16
สำหรับเวอร์ชั่นเก่าของ Go, คุณยังสามารถติดตั้ง Carbon โดยใช้:
go get -u github.com/golang-module/carbon
และนำเข้ามันเช่นเดียวกัน:
import "github.com/golang-module/carbon"
โปรดทราบว่า v1 ไม่ได้รับการปรับปรุงอย่างใหม่ แต่จะมีการสนับสนุนในการแก้บั๊ก
1.3 การเซ็ตโปรเจ็กต์ Carbon ครั้งแรกของคุณ
การกำหนดค่าพื้นฐานของ Carbon: เมื่อ Carbon ถูกติดตั้งแล้ว คุณสามารถเริ่มใช้ได้โดยการสร้างตัวแทน Carbon ใหม่ๆโดยตรง คุณสามารถปรับแต่ง Carbon โดยการกำหนดรูปแบบของตัวแทนค่าเริ่มต้นโลกัลและภาษาให้เข้ากับความต้องการของโปรเจ็กต์ของคุณ
การกำหนดรูปแบบเริ่มต้นโลกัลขึ้น:
carbon.SetDefault(carbon.Default{
Layout: carbon.RFC3339Layout,
Timezone: carbon.PRC,
Locale: "en",
})
หากไม่ได้รับการตั้งค่าโดยชัดเจน Carbon มีการตั้งค่าเริ่มต้นสำหรับเหล่านี้ — Layout: "2006-01-02 15:04:05"
, Timezone: Local
, Locale: "en"
.
2: การดำเนินการเบื้องต้นของ Carbon
2.1 การทำงานกับเวลาปัจจุบัน
การเรียกวันที่เวลาปัจจุบัน
การเรียกวันที่และเวลาปัจจุบันเป็นการดำเนินการรากฐานของไอ้แพลปิเคชั่นหลายอย่าง ด้วย Carbon, คุณสามารถเข้าถึงตัวโปรแกรม datetime ปัจจุบันโดยการใช้เมอธอด carbon.Now()
ดูตัวอย่างการเรียกวันที่ปัจจุบัน:
// ดูตัวอย่างการเรียกวันที่และเวลาปัจจุบันเป็นตัวโปรแกรม
now := carbon.Now()
fmt.Println("Current datetime:", now)
การแสดงวันที่วันนี้ เมื่อวาน และพรุ่งนี้
Carbon จะสามารถให้วิธีการทำงานที่สง่างามกับวันที่ที่เกี่ยวข้องกับวันนี้ โดยให้เมอธอด carbon.Now()
carbon.Yesterday()
and carbon.Tomorrow()
ตามลำดับ ดูตัวอย่างการใช้งานกับวันที่วันนี้,เมื่อวาน และพรุ่งนี้:
// วันที่ปัจจุบัน
today := carbon.Now()
fmt.Println("Today:", today.ToDateTimeString())
// วันที่เมื่อวาน
yesterday := carbon.Yesterday()
fmt.Println("Yesterday:", yesterday.ToDateTimeString())
// วันที่พรุ่งนี้
tomorrow := carbon.Tomorrow()
fmt.Println("Tomorrow:", tomorrow.ToDateTimeString())
เมอธอดเหล่านี้ให้วิธีที่สรุปกับการทำงานนี้คุณมีแหล่งอ้างอิงวันที่ที่สำคัญที่สม่ำเสมอโดยไม่ต้องคำนวณเองเอง
การจัดรูปแบบและการแสดงเวลาปัจจุบัน
Carbon ผนวกรินิติเคียงต่างๆที่จะตัดแต่งและแสดงวันที่และเวลา ไมว่าคุณจะให้วิธีแสดงที่มาตรฐานอย่าง ISO8601 หรือหากคุณต้องการแบบที่พากาศจากตามท้องถิ่น
นี่คือวิธีง่ายการจัดรูปแบบวันที่ปัจจุบันถาวรๆ:
// การแสดงวันที่และเวลาที่มีมาตรฐาน
fmt.Println("RFC3339:", now.ToRFC3339String())
fmt.Println("ISO8601:", now.ToIso8601String())
// การแสดงรูปแบบที่กำหนดเอง
fmt.Println("Custom:", now.Format("Monday, 02-Jan-06 15:04:05 MST"))
// การใช้รูปแบบที่ถูกกำหนดไว้ล่วงหน้า
fmt.Println("ANSIC format:", now.ToAnsicString())
fmt.Println("UnixDate format:", now.ToUnixDateString())
fmt.Println("RubyDate format:", now.ToRubyDateString())
fmt.Println("Kitchen format:", now.ToKitchenString())
// สำหรับรูปแบบที่กำหนดเอง ให้ใช้วิธี Format
fmt.Println("Custom pattern:", now.Format("2006-01-02 3:04 PM"))
2.2 การสร้างตัวบ่งประมาณของ Carbon
สร้างอินสแตนซ์จากแม่เวลา
ใน Go, การจัดการกับแม่เวลาเป็นเรื่องที่พบบ่อย และ Carbon มีเมทอดที่ใช้อย่างสะดวกสบายในการจัดการกับมัน แม่เวลาคือลำดับของตัวอักษรหรือข้อมูลที่ถูกเข้ารหัสที่ระบุเมื่อเกิดเหตุการณ์ที่ต้องการ โดยทั่วไปจะระบุวันที่และเวลาของวัน โดยบางครั้งมีความแม่นยำถึงแม่วินาที
เพื่อสร้างอินสแตนซ์ Carbon จาก Unix timestamp ซึ่งแทนจำนวนวินาทีที่ผ่านไปตั้งแต่เริ่มต้นของ Unix (เที่ยงคืนของวันที่ 1 มกราคม 1970, UTC) คุณสามารถใช้ระดับความแม่นยำต่าง ๆ ได้:
// สร้างอินสแตนซ์ Carbon จาก timestamp ที่กำหนด ด้วยความแม่นยำของวินาที
c1 := carbon.CreateFromTimestamp(1596604455)
fmt.Println(c1.ToString()) // แสดง: "202-08-05 13:14:15 +080 CST"
// สำหรับความแม่นยำที่สูงขึ้น (มิลลิวินาที) ให้ใช้ `CreateFromTimestampMilli`
c2 := carbon.CreateFromTimestampMilli(1596604455999)
fmt.Println(c2.ToString()) // แสดง: "202-08-05 13:14:15.999 +080 CST"
// สำหรับไมโครวินาที ให้ใช้ `CreateFromTimestampMicro`
c3 := carbon.CreateFromTimestampMicro(1596604455999999)
fmt.Println(c3.ToString()) // แสดง: "202-08-05 13:14:15.999999 +080 CST"
// และสำหรับเนนโตวินาที ให้ใช้ `CreateFromTimestampNano`
c4 := carbon.CreateFromTimestampNano(1596604455999999999)
fmt.Println(c4.ToString()) // แสดง: "202-08-05 13:14:15.999999999 +080 CST"
สร้างอินสแตนซ์จากส่วนประกอบของวันที่และเวลา
หากคุณมีส่วนประกอบของวันที่อย่างต่างหาก เช่น ปี เดือน และวัน หรือส่วนประกอบของเวลาเช่น ชั่วโมง นาที และวินาที Carbo สามารถจัดการกับเหล่านี้ได้เช่นเช่นกัน
// สร้างอินสแตนซ์ Carbon จากวันที่ที่กำหนดเท่านั้น
date := carbon.CreateFromDate(2022, 12, 25)
fmt.Println(date.ToDateString()) // แสดง: "2022-12-25"
// สร้างอินสแตนซ์ Carbon จากเวลาที่กำหนดเท่านั้น
time := carbon.CreateFromTime(23, 59, 59)
fmt.Println(time.ToTimeString()) // แสดง: "23:59:59"
// สร้างอินสแตนซ์ Carbon จากทั้งวันที่และเวลา
dateTime := carbon.CreateFromDateTime(2022, 12, 25, 23, 59, 59)
fmt.Println(dateTime.ToDateTimeString()) // แสดง: "2022-12-25 23:59:59"
2.3 การแปลงสตริงเป็นเวลา
การจัดการกับการแสดงเวลาและวันที่เป็นสตริงเป็นสถานการณ์ที่พบบ่อย Carbon ทำให้สะดวกต่อการแปลงสตริงเป็นอินสแตนส์ของ Carbo
การใช้ carbon.Parse
สำหรับรูปแบบเวลามาตรฐาน:
// แปลงสตริงที่มีวันที่และเวลา
c := carbon.Parse("202-08-05 13:14:15", carbon.PRC)
if c.Error != nil {
fmt.Printf("ผิดพลาด: %v", c.Error)
} else {
fmt.Println(c.ToDateTimeString()) // แสดง: "202-08-05 13:14:15"
}
// แปลงสตริงที่มีรูปแบบ RFC3339
rfc3339 := carbon.Parse("202-08-05T13:14:15+08:00")
fmt.Println(rfc3339.ToString()) // แสดง: "202-08-05 13:14:15 +080 CST"
รูปแบบที่กำหนดเองด้วย ParseByFormat
และ ParseByLayout
คุณสามารถแปลงสตริงที่อยู่ในรูปแบบที่ไม่ได้รับการจัดการโดยตรงโดย carbon.Parse
ได้เช่นเดียวกัน
// แปลงสตริงที่มีเวลาเป็นอินสแตนซ์ Carbon โดยใช้รูปแบบ
byFormat := carbon.ParseByFormat("202|08|05 13|14|15", "2006|01|02 15|04|05")
fmt.Println(byFormat.ToDateTimeString()) // แสดง: "202-08-05 13:14:15"
// แปลงสตริงที่มีเวลาเป็นอินสแตน์ Carbon โดยใช้เลย์เอาท์
byLayout := carbon.ParseByLayout("202|08|05", "2006|01|02")
fmt.Println(byLayout.ToDateString()) // แสดง: "202-08-05"
การจัดการข้อผิดพลาด
อย่าลืมตรวจสอบฟิลด์ Error
เสมอเพื่อให้มั่นใจว่าการแปลงเป็นสำเร็จ:
invalidDate := carbon.Parse("นี่ไม่ใช่วันที่", carbon.PRC)
if invalidDate.IsInvalid() {
fmt.Println("ข้อผิดพลาดในการแปลงวันที่:", invalidDate.Error)
}
จำไว้ว่าการตรวจสอบข้อผิดพลาดอย่างเข้มงวดเป็นส่วนสำคัญของการทำงานกับวันที่และเวลาเพื่อป้องกันผลลัพธ์ที่ไม่คาดคิดหรือการล้มเหลวของระบบ