Jira转GitLab迁移脚本:如何转换time.Time相关类型?
Jira自定义Time类型转GitLab *time.Time的实现方法
因为Jira API库的Time类型是基于标准库time.Time的自定义类型(type Time time.Time),你可以通过强制转换+取地址的方式直接完成类型适配,具体步骤如下:
- 将Jira的自定义
Time类型强制转换为标准time.Time - 对转换后的标准时间取地址,得到GitLab API需要的
*time.Time类型
代码示例
假设你已经从Jira获取到工单创建时间jiraCreatedAt(类型为jira.Time),转换并赋值给GitLab的CreateIssueOptions:
import ( "time" "github.com/x/y/jira" // 替换为实际Jira API库路径 "github.com/x/y/gitlab" // 替换为实际GitLab API库路径 ) // 转换Jira创建时间到GitLab所需类型 stdCreatedAt := time.Time(jiraCreatedAt) // 构建GitLab创建工单选项 createOpts := &gitlab.CreateIssueOptions{ CreatedAt: &stdCreatedAt, // 填充其他必填字段,比如Title、Description等 }
补充说明
- 这种强制转换可行的核心原因是:Go语言允许底层类型一致的自定义类型与原类型直接转换,Jira的
Time只是time.Time的自定义包装类型,底层结构完全一致。 - 如果Jira的
Time类型提供了ToTime()之类的封装方法,你也可以用该方法替代强制转换,效果完全一致。 - 转换后的
time.Time会保留原有的时区信息,GitLab API能正确解析带时区的时间值。
内容的提问来源于stack exchange,提问作者Brad Mace
相关产品推荐
相关产品推荐

