数据库用的 postgresql,字段类型为:TIMESTAMP
因为这一列的值可能存在null所以在 scan 的时候这一列的变量类型定义为:sql.NullString,这样最后如果有值的话得到的数据为这样的格式:"xxxx-xx-xxTxx:xx:xxZ"
这样会报错:time.Parse("layout", "xxxx-xx-xxTxx:xx:xxZ")
写时间 v 站就要让验证手机号:所以上面的时间和 layout 没写具体的值
数据库用的 postgresql,字段类型为:TIMESTAMP
因为这一列的值可能存在null所以在 scan 的时候这一列的变量类型定义为:sql.NullString,这样最后如果有值的话得到的数据为这样的格式:"xxxx-xx-xxTxx:xx:xxZ"
这样会报错:time.Parse("layout", "xxxx-xx-xxTxx:xx:xxZ")
写时间 v 站就要让验证手机号:所以上面的时间和 layout 没写具体的值
|
kungfuchickenMay 13, 2019
1
每个字都看懂了,但是我没看懂你在问啥
|
|
2
@kungfuchicken 刚才一直在编辑主题,里面不知道里面哪个时间写的不对,v 站一直让验证手机
|
|
3
@kungfuchicken 想把这个直接格式化成北京时间
|
|
www5070504May 13, 2019
4
没有指定时间格式的转换成时间戳的参数么
|
|
5
@www5070504 我也刚接触 go 不久,官方的``time``包找了下好像是没有。 第三方的不清楚有没有。
|
|
lcdtyphMay 13, 2019 via iPhone
6
我猜你要找的是 strptime,不知道 go 有没有
|
|
7
@lcdtyph 解决了,是前面 layout 不对。我 layout 用的 xxxx-xx-xx xx:xx:xx,这里需要用 xxxx-xx-xxTxx:xx:xxZ
|
|
reusMay 13, 2019
8
用 SQL 表达式 extract(epoch from xxx)::bigint 就可以返回时间戳,不用在 go 代码里解析
|
|
reusMay 13, 2019
9
数据库返回的不一定是 "xxxx-xx-xxTxx:xx:xxZ" 格式。默认应该是 ISO 格式的,你这里不知道是哪里转换成了 ISO 8601 格式。你要确定数据库和程序库会一直输出 ISO 8601 格式才行,不然以后可能会出错。
|
|
keepeyeMay 13, 2019
10
没错,go 从数据库读出来的时间显示格式就是 tz 格式,很恶心,要自己 parse 再 format 成 datetime 格式
|
|
keepeyeMay 13, 2019
11
不过我建议你字段类型直接设置成 *time.Time,不用字符串,省了再去 parse
|
|
learnshareMay 13, 2019
12
|
|
keepeyeMay 13, 2019
13
@learnshare 变量类型是 time.Time 没问题。问题是 string 类型的,为什么要转成这种格式呢? mysql 的 timestamp 模式显示格式不是 yyyy-mm-dd hh:ii:ss 吗?
|
|
MittMay 13, 2019 via iPhone
14
@learnshare 问题不应该是 time.Parse 不能用这个值反格式化吗
|
|
learnshareMay 13, 2019
15
|
|
heimeilMay 13, 2019
16
time.RFC3339
|
|
18
|
|
19
|
|
rrfengMay 13, 2019
20
这肯定是 layout 有问题啊……
|
|
YakuMiotoMay 13, 2019 via Android
21
2006-01-02T13:04:05Z
|