用G语言实现将月日时分保存在文件并从文件读取出来转换成月日时分
时间: 2024-09-23 12:12:16 浏览: 42
thinkPHP+PHPExcel实现读取文件日期的方法(含时分秒)
G语言是一种相对较少见的语言,如果你想要在G语言中操作文件并将日期时间存储和读取,通常会涉及基本的I/O操作。下面是一个简单的示例,展示如何使用G语言的基本语法来实现这个功能:
```golang
// 导入必要的包
import "os"
import "time"
// 定义结构体表示日期时间
type DateTime struct {
Month int
Day int
Hour int
Minute int
}
// 将DateTime保存到文件
func SaveDateTime(date DateTime, filename string) error {
// 创建文件(如果不存在)
file, err := os.Create(filename)
if err != nil {
return err
}
defer file.Close()
// 写入日期时间信息
_, err = fmt.Fprintf(file, "%d-%02d-%02d %02d:%02d", date.Month, date.Day, date.Hour, date.Minute)
if err != nil {
return err
}
return nil
}
// 从文件读取日期时间并转换
func ReadDateTimeFromFile(filename string) (DateTime, error) {
// 打开文件
file, err := os.Open(filename)
if err != nil {
return DateTime{}, err
}
defer file.Close()
// 读取文件内容
scanner := bufio.NewScanner(file)
if !scanner.Scan() {
return DateTime{}, fmt.Errorf("failed to read from file")
}
parts := strings.Split(scanner.Text(), "-")
timeParts := strings.Split(parts[1], " ")
// 解析并创建DateTime
date, err := strconv.Atoi(parts[0])
hour, _ := strconv.Atoi(timeParts[0])
minute, _ := strconv.Atoi(timeParts[1])
dateTime := DateTime{Month: date, Day: dayToInt(parts[1]), Hour: hour, Minute: minute}
return dateTime, err
}
// 转换字符串中的天数为数字(假设月份有31天)
func dayToInt(dayStr string) int {
daysInMonth := [13]int{31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}
for i, d := range daysInMonth {
if dayStr == fmt.Sprintf("%02d", d) {
return i + 1
}
}
return -1 // 如果不是有效的日期,返回错误
}
// 示例用法
main() {
date := DateTime{Month: 12, Day: 31, Hour: 23, Minute: 59}
err := SaveDateTime(date, "datetime.txt")
if err != nil {
println(err)
} else {
loadedDate, err := ReadDateTimeFromFile("datetime.txt")
if err != nil {
println(err)
} else {
println(loadedDate)
}
}
}
```
阅读全文