|
我试图在[]中添加我数据库中的一些值stringGo 中。有些是时间戳。
3 D( j& X9 o8 `& \我收到了错误:
) X/ S, M I* D! F不能使用 U.Created_date (type time.Time) 作为数组元素中的类型字符串
( d1 D: v/ g: @. n我可以转换time.Time为string吗?6 N$ \: R8 K) G
type UsersSession struct Userid int Timestamp time.Time Created_date time.Time}type Users struct Name string Email string Country string Created_date time.Time Id int Hash string IP string}9 |; a$ s2 i/ d0 y, Z
——6 m+ u Q" O/ ~/ m' D. ~
var usersArray = [][]string{}rows,err := db.Query("SELECT u.id,u.hash,u.name,u.email,u.country,u.IP,u.created_date,us.timestamp,us.created_date FROM usersSession AS us LEFT JOIN users AS u ON u.id = us.userid WHERE us.timestamp interval 30 minute >= now()")U := Users{}US := UsersSession{}for rows.Next() err = rows.Scan(&U.Id,&U.Hash,&U.Name,&U.Email,&U.Country,&U.IP,&U.Created_date,&US.Timestamp,&US.Created_date) checkErr(err) userid_string := strconv.Itoa(U.Id) user := []string{userid_string,U.Hash,U.Name,U.Email,U.Country,U.IP,U.Created_date,US.Timestamp,US.Created_date} // ------------- // ^ this is where the error occurs // cannot use U.Created_date (type time.Time) as type string in array element (for US.Created_date and US.Timestamp aswell) // ------------- usersArray = append(usersArray,user) log.Print("usersArray: ",usersArray)}
% M2 u# R. x- P% O/ c7 b$ {$ r 编辑
. m2 p+ w2 q& R' S我添加了以下内容。现在可以用了,谢谢。
2 Y& r* o4 d2 {4 ]) xuserCreatedDate := U.Created_date.Format("2006-01-02 15:04:05")userSessionCreatedDate := US.Created_date.Format("2006-01-02 15:04:05")userSessionTimestamp := US.Timestamp.Format("2006-01-02 15:04:05")
/ p: s6 h( @0 ~+ _6 x- a , ^; q8 ^ x7 }
解决方案: 1 Q4 U& P2 p: J) d; ?
你可以用这个Time.String()方法将 a 转换time.Time为 a string。使用格式字符串"2006-01-02 15:04:05.999999999 -0700 MST"。4 Z3 {5 z Z0 B$ E( G
如果需要其他自定义格式,可以使用Time.Format(). 例如,以yyyy-MM-dd HH:mm:ss使用格式字符串的格式获取时间戳"2006-01-02 15:04:05"。5 P! a' }% e0 i T0 a
例子:
. k+ S( b; ^1 i4 Q/ `! ct := time.Now()fmt.Println(t.String())fmt.Println(t.Format("2006-01-02 15:04:05"))3 D+ \* B5 I, [" o& s+ N
输出(在Go Playground上试试):
- |: M4 T$ E0 H7 ?' `( R2009-11-10 23:00UTC2009-11-10 23:00:005 z7 H3 U8 F3 b7 b8 C9 G( W, M
注意:Go Playground 上述时间始终设置为上述值。在本地运行,查看当前日期/时间。
, C4 B" h9 h$ e0 I% M8 V! H2 o请注意,使用Time.Format(),作为布局,string你必须一直传递同样的时间 - 称为参考时间 - 以你想要格式化结果的方式格式化。这是记录在内的Time.Format():
# r) B( M1 A! t6 G" W' f8 AFormat 根据布局格式化的时间值,通过显示如何定义参考时间来定义格式
( @/ I: O! e* }golangMon Jan 2 15:04:05 -0700 MST 2006
0 P+ _( D$ G- t如果是值,则会显示;它被用作所需输出的示例。然后在时间值中应用相同的显示规则。 |
|