
By Weerasak Chongnguluam
สร้าง date command ที่ format ด้วย layout แบบของ Go time package
ใน Unix คำสั่ง date จะใช้ format แบบ Y, m, d อะไรแบบนี้ซึ่งเอาจริงๆพอเขียน Go บ่อยว่าภาษาอื่น ทำให้จำพวกนี้ไม่ค่อยได้ แต่จำวิธี format date ของ Go ได้มากกว่า วันนี้เลยลองเขียน command สำหรับแสดง date ขึ้นมาใหม่เองโดยใช้ format layout แบบของ Go แทน
ใน Unix มีคำสั่ง date ไว้แสดงวันที่ปัจจุบัน ซึ่งเวลาสั่ง date เฉยๆจะได้แบบนี้
$ date
Fri Apr 22 22:34:02 +07 2022
เราสามารถใส่ format ได้โดยใช้ option เป็น string ที่มี + ข้างหน้า เช่น
% date "+%Y/%m/%d"
2022/04/22
จะเห็นว่าใช้ format string ตามรูปแบบของ Unix
ที่นี้เราจะสร้างโปรแกรมขึ้นมาใหม่แทน date ให้ใช้ format layout แบบของ Go time package แทน
โค้ดสั้นๆ ง่ายๆแค่รับ flag แล้วเอาไปใส่ method Format แบบนี้
package main
import (
"flag"
"fmt"
"time"
)
func main() {
format := flag.String("f", time.RFC3339, "date time format layout")
flag.Parse()
fmt.Println(time.Now().Format(*format))
}
เวลาใช้งานก็สั่ง ชื่อ command ได้เลยหรือใส่ option -f ตามด้วย format แบบ Go ได้แบบนี้
$ ./dt
2022-04-22T22:42:11+07:00
$ ./dt -f "2006/01/02"
2022/04/22