我有以下代码,它将字符串作为输入,并转换为 UNIX 时间戳。我想在 golang 中做同样的事情,但我无法识别在 Go 中将提供等效于 DateTimeOffset 结构的结构或函数。class Program{ static void Main(string[] args) { var date = GetUtcTimestampFromAttribute(); Console.WriteLine(date); if (date != null) { Console.WriteLine(ToUnixTimeStamp(date.Value)); } Console.ReadKey(); } public static DateTimeOffset? GetUtcTimestampFromAttribute() { var ticks = long.Parse("7036640000000"); Console.WriteLine(ticks); return GetUtcTimestampFromTicks(ticks); } public static DateTimeOffset? GetUtcTimestampFromTicks(long ticks) { Console.WriteLine(new DateTimeOffset(ticks, TimeSpan.Zero)); return ticks != 0 ? new DateTimeOffset(ticks, TimeSpan.Zero) : (DateTimeOffset?)null; } public static long ToUnixTimeStamp(DateTimeOffset timeStamp) { var epoch = new DateTimeOffset(1970, 1, 1, 0, 0, 0, TimeSpan.Zero); return Convert.ToInt64((timeStamp - epoch).TotalSeconds); }}例如:输入:635804753769100000输出:1444878577UTC 对应时间:10/15/2015 3:09:36 AM +00:00有人可以帮助我解决方法以获得上述结果。
1 回答
皈依舞
TA贡献1851条经验 获得超3个赞
我相信这个time包有你需要的一切,它是 IMO 最好的时间库,我用任何语言工作过。例子:
package main
import(
"fmt"
"time"
)
func main(){
// this is how you parse a unix timestamp
t := time.Unix(1444902545, 0)
// get the UTC time
fmt.Println("The time converted to UTC:", t.UTC())
// convert it to any zone: FixedZone can take a utc offset and zone name
fmt.Println(t.In(time.FixedZone("IST", 7200)))
}
编辑将时间对象转换回 unix 时间戳很简单:
t.Unix()
或者
t.UnixNano()
- 1 回答
- 0 关注
- 138 浏览
添加回答
举报
0/150
提交
取消