gpt4 book ai didi

html - 如何将 html 表单中的日期和时间输入类型存储到 sqlite3 DB 中

转载 作者:数据小太阳 更新时间:2023-10-29 03:19:57 24 4
gpt4 key购买 nike

我正在个人助理应用程序中设置一个提醒功能。该应用程序接受提醒的详细信息作为 html 表单,其中还包括 datetime 输入字段。

我正在使用 golang 创建我的服务器并使用它创建了一个 sqlite 数据库。但是表单中的日期和时间值不会保存在数据库中,而标题、描述等其他字段会被保存。我应该为 sqlite 数据库中的时间和日期字段使用什么数据类型?

我试过使用 TEXT 作为日期和时间的数据类型,但它不起作用。

输入形式:

   ...
<div class="form-group">
<label for="date">Date</label>
<input type="date" class="form-control" id="date" data-ng-model="formData.remDate" required>
</div>

<div class="form-group">
<label for="time">Time</label>
<input type="time" class="form-control" id="time" data-ng-model="formData.remTime" required>
</div>
...

这是从表单生成的提醒对象:

{title: "learn golang", description: "How do I save date and time in database?", date: Mon Apr 08 2019 00:00:00 GMT+0530 (India Standard Time), time: Thu Jan 01 1970 20:00:00 GMT+0530 (India Standard Time)}

用于在数据库中创建和存储的 Golang 文件:

package controllers

import (
"net/http"
"database/sql"
"fmt"
"strconv"

_ "github.com/mattn/go-sqlite3"
)

type reminder struct {
id int
title string
description string
date string
time string
}

func ReminderController(w http.ResponseWriter, r *http.Request) {

w.Header().Set("Access-Control-Allow-Origin", "*")
w.Header().Set("Access-Control-Allow-Headers", "Content-Type")
r.ParseForm()

request := reminder{
title: r.FormValue("title"),
description: r.FormValue("description"),
date: r.FormValue("date"),
time: r.FormValue("time"),
}
fmt.Println(request)

AddReminder(request, w)

}

func prepareDB() {
database, err := sql.Open("sqlite3", "./jarvis.db")
checkErr(err)

statement, err := database.Prepare("CREATE TABLE IF NOT EXISTS reminder (id INTEGER PRIMARY KEY, title TEXT, description TEXT, date TEXT, time TEXT")
checkErr(err)

statement.Exec()
}

func AddReminder(reminderObject reminder, res http.ResponseWriter) {
prepareDB()

database, err := sql.Open("sqlite3", "./jarvis.db")
checkErr(err)

statement, err := database.Prepare("INSERT INTO reminder (title, description, date, time) VALUES (?,?,?,?) ")
checkErr(err)
fmt.Println(reminderObject.title)
statement.Exec(reminderObject.title, reminderObject.description, reminderObject.date, reminderObject.time)

ShowReminder()

res.Write([]byte(`{"status": "success", "message": "Reminder has been set !"}`))
}

func ShowReminder() {
prepareDB()

database, err := sql.Open("sqlite3", "./jarvis.db")
checkErr(err)

rows, err := database.Query("SELECT id, title, description, date, time FROM reminder")
checkErr(err)

var id int
var title string
var description string
var date string
var time string

for rows.Next() {
rows.Scan(&id, &title, &description, &date, &time)
fmt.Println(strconv.Itoa(id) + ": " + title + " " + description + "\nEnd Time : " + date + ":" + time)
}
}

func checkErr(err error) {
if err != nil {
panic(err)
}
}

在 go 控制台中生成的输出:

3: learn golang How do I save date and time in database?
End Time : :

最佳答案

在 sqlite 表中使用 Integer 类型,提醒结构中的时间属性应更改为 time.Time

type reminder struct {
id int
title string
description string
date string
time time.Time
}

为了将您的表单日期和时间字符串转换为 time.Time 格式,您应该像这样解析您的字符串:

layout := "2006-01-02T15:04:05.000Z"
str := fmt.Sprintf("%sT%sZ", r.FormValue("date") , r.FormValue("time"))
t, err := time.Parse(layout, str)

关于html - 如何将 html 表单中的日期和时间输入类型存储到 sqlite3 DB 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55560541/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com