convertthai

package module
v1.0.6 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: May 21, 2026 License: MIT Imports: 7 Imported by: 0

README

convert-thai-go ✨

convert-thai-go is a Go package for Thai date formatting, Thai numeral conversion, and Thai Baht text generation.

แพ็กเกจสำหรับจัดรูปแบบวันที่ภาษาไทย แปลงเลขอารบิกเป็นเลขไทย และแปลงจำนวนเงินเป็นข้อความภาษาไทย

Go Reference Go Report Card License


Features

  • Thai number formatting
  • Thai numeral conversion
  • Thai Baht text generation
  • Thai date formatting
  • Locale support
    • th Thai locale with Thai numerals
    • en English locale with Arabic numerals
  • Multiple era support
    • BE Buddhist Era
    • CE Common Era
    • MS Mahasakaraj / Saka Era
    • CS Chulasakaraj Era
    • RE Rattanakosin Era
    • HE Hijri Era (approximate)

Installation

go get github.com/SiamCore/convert-thai-go

Usage

package main

import (
	"fmt"
	"time"

	convertthai "github.com/SiamCore/convert-thai-go"
)

func main() {
	// Thai number formatting
	num := convertthai.NumberFormat(1000, 2, true, true)
	fmt.Println(num)
	// Output: ๑,๐๐๐.๐๐

	// English number formatting
	numEN := convertthai.NumberFormat(1000, 2, false, true)
	fmt.Println(numEN)
	// Output: 1,000.00

	// Thai Baht text
	baht := convertthai.ThaiBath(1000)
	fmt.Println(baht)
	// Output: หนึ่งพันบาทถ้วน

	// Default Thai locale (BE)
	dateTH := convertthai.DateFormat(time.Now(), "dddd dd mmmm yyyy", nil, nil)
	fmt.Println(dateTH)
	// Output: พุธ ๒๐ พฤษภาคม ๒๕๖๙

	// English locale (CE)
	locale := "en"
	dateEN := convertthai.DateFormat(time.Now(), "dddd dd mmmm yyyy", nil, &locale)
	fmt.Println(dateEN)
	// Output: Wednesday 20 May 2026

	// Custom era
	era := "HE"
	dateRE := convertthai.DateFormat(time.Now(), "dd/mm/yyyy", &era, nil)
	fmt.Println(dateRE)
	// Output: ๒๐/๐๕/๑๔๔๗
}

Date Format Tokens

Token Description Example (th) Example (en)
d Day without leading zero 1
dd Day with leading zero ๐๑ 01
ddd Short weekday Mon
dddd Full weekday จันทร์ Monday
m Month without leading zero 1
mm Month with leading zero ๐๑ 01
mmm Short month ม.ค. Jan
mmmm Full month มกราคม January
yy Two-digit year ๖๙ 26
yyyy Full year ๒๕๖๙ 2026
H Hour without leading zero 9
HH Hour with leading zero ๐๙ 09
M Minute without leading zero 5
MM Minute with leading zero ๐๕ 05
S Second without leading zero 8
SS Second with leading zero ๐๘ 08

Format Examples

Format Example (th) Example (en)
dd/mm/yyyy ๒๐/๐๕/๒๕๖๙ 20/05/2026
dd/mm/yy ๒๐/๐๕/๖๙ 20/05/26
yyyy/mm/dd ๒๕๖๙/๐๕/๒๐ 2026/05/20
HH:MM:SS ๐๗:๓๐:๒๕ 07:30:25
dd mmm yyyy ๒๐ พ.ค. ๒๕๖๙ 20 May 2026
dd mmmm yyyy ๒๐ พฤษภาคม ๒๕๖๙ 20 May 2026
ddd dd mmm yyyy พ ๒๐ พ.ค. ๒๕๖๙ Wed 20 May 2026
dddd dd mmmm yyyy พุธ ๒๐ พฤษภาคม ๒๕๖๙ Wednesday 20 May 2026
dd/mm/yyyy HH:MM:SS ๒๐/๐๕/๒๕๖๙ ๐๗:๓๐:๒๕ 20/05/2026 07:30:25

Supported Locales

Locale Description
th Thai locale with Thai numerals
en English locale with Arabic numerals

Supported Eras

Era Description Example (th) Example (en)
BE Buddhist Era (พ.ศ.) ๒๕๖๙ 2569
CE Common Era / Christian Era (ค.ศ.) ๒๐๒๖ 2026
MS Mahasakaraj / Saka Era (มหาศักราช) ๑๙๔๘ 1948
CS Chulasakaraj Era (จุลศักราช) ๑๓๘๘ 1388
RE Rattanakosin Era (รัตนโกสินทรศก) ๒๔๕ 245
HE Hijri Era (ฮิจเราะห์ศักราช, approximate) ๑๔๔๗ 1447

Default Behavior

Locale Default Era
th BE
en CE

Example Output

พุธ ๒๐ พฤษภาคม ๒๕๖๙
Wednesday 20 May 2026
หนึ่งพันบาทถ้วน
๑,๐๐๐.๐๐
1,000.00

Notes

  • DateFormat() uses the timezone from the provided time.Time.
  • HE uses approximate conversion.
  • Input string format currently supports:
    • 2006-01-02

License

MIT License

Documentation

Index

Constants

View Source
const (
	BE = "BE" // พ.ศ. (BE) Buddhist Era
	CE = "CE" // ค.ศ. (CE) Common Era
	MS = "MS" // ม.ศ. (MS) Mahasakaraj / Saka Era
	CS = "CS" // ซ.ศ. (CS) Chulasakaraj Era
	RE = "RE" // ร.ศ. (RE) Rattanakosin Era
	HE = "HE" // ฮ.ศ. (HE) Hijri Era (approximate)
)

Variables

View Source
var ENLocale = Locale{
	FullMonths: map[string]string{
		"January":   "January",
		"February":  "February",
		"March":     "March",
		"April":     "April",
		"May":       "May",
		"June":      "June",
		"July":      "July",
		"August":    "August",
		"September": "September",
		"October":   "October",
		"November":  "November",
		"December":  "December",
	},
	ShortMonths: map[string]string{
		"January":   "Jan",
		"February":  "Feb",
		"March":     "Mar",
		"April":     "Apr",
		"May":       "May",
		"June":      "Jun",
		"July":      "Jul",
		"August":    "Aug",
		"September": "Sep",
		"October":   "Oct",
		"November":  "Nov",
		"December":  "Dec",
	},
	FullDays: map[string]string{
		"Sunday":    "Sunday",
		"Monday":    "Monday",
		"Tuesday":   "Tuesday",
		"Wednesday": "Wednesday",
		"Thursday":  "Thursday",
		"Friday":    "Friday",
		"Saturday":  "Saturday",
	},
	ShortDays: map[string]string{
		"Sunday":    "Sun",
		"Monday":    "Mon",
		"Tuesday":   "Tue",
		"Wednesday": "Wed",
		"Thursday":  "Thu",
		"Friday":    "Fri",
		"Saturday":  "Sat",
	},
	UseThaiDigit: false,
}

--- EN

View Source
var THLocale = Locale{
	FullMonths: map[string]string{
		"January":   "มกราคม",
		"February":  "กุมภาพันธ์",
		"March":     "มีนาคม",
		"April":     "เมษายน",
		"May":       "พฤษภาคม",
		"June":      "มิถุนายน",
		"July":      "กรกฎาคม",
		"August":    "สิงหาคม",
		"September": "กันยายน",
		"October":   "ตุลาคม",
		"November":  "พฤศจิกายน",
		"December":  "ธันวาคม",
	},
	ShortMonths: map[string]string{
		"January":   "ม.ค.",
		"February":  "ก.พ.",
		"March":     "มี.ค.",
		"April":     "เม.ย.",
		"May":       "พ.ค.",
		"June":      "มิ.ย.",
		"July":      "ก.ค.",
		"August":    "ส.ค.",
		"September": "ก.ย.",
		"October":   "ต.ค.",
		"November":  "พ.ย.",
		"December":  "ธ.ค.",
	},
	FullDays: map[string]string{
		"Sunday":    "อาทิตย์",
		"Monday":    "จันทร์",
		"Tuesday":   "อังคาร",
		"Wednesday": "พุธ",
		"Thursday":  "พฤหัสบดี",
		"Friday":    "ศุกร์",
		"Saturday":  "เสาร์",
	},
	ShortDays: map[string]string{
		"Sunday":    "อา",
		"Monday":    "จ",
		"Tuesday":   "อ",
		"Wednesday": "พ",
		"Thursday":  "พฤ",
		"Friday":    "ศ",
		"Saturday":  "ส",
	},
	UseThaiDigit: true,
}

--- TH

Functions

func DateFormat

func DateFormat(date interface{}, format string, era *string, locale *string) string

func NumberFormat

func NumberFormat(number float64, decimals int, useThaiNumber bool, thousandsSeparator bool) string

func ThaiBath

func ThaiBath(number float64) string

Types

type Locale added in v1.0.6

type Locale struct {
	FullMonths   map[string]string
	ShortMonths  map[string]string
	FullDays     map[string]string
	ShortDays    map[string]string
	UseThaiDigit bool
}

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL