在xml文件中,使用日期/时间的正确格式是怎样的

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在xml文件中,使用日期/时间的正确格式是怎样的相关的知识,希望对你有一定的参考价值。

参考技术A 是误删了文件而导致的。
解决办法:
1.
首先,可以到网上或者别人的电脑,或者进入穿越火线的安装目录,找到一个叫tcls的文件夹打开。
2.
找到mmog_data.xml这个文件然后将其复制到你的电脑上相同的位置。
3.
然后找到tcls目录下的有一个repair的应用程序,运行让它排除一下其它运行错误。
首先,可以到网上或者别人的电脑,或者进入英雄联盟的安装目录,找到一个叫tcls的文件夹打开。
找到mmog_data.xml这个文件然后将其复制到你的电脑上相同的位置。看能初步解决问题否。
然后找到tcls目录下的有一个repair的应用程序,运行它让它排除一下其它运行错误。
如果仍然无法解决该问题,则只能重新安装一下游戏。

Golang XML Unmarshal 和 time.Time 字段

【中文标题】Golang XML Unmarshal 和 time.Time 字段【英文标题】:Golang XML Unmarshal and time.Time fields 【发布时间】:2013-06-22 11:24:28 【问题描述】:

我有通过 REST API 检索的 XML 数据,我将其解组到 GO 结构中。其中一个字段是日期字段,但是 API 返回的日期格式与默认时间不匹配。时间解析格式因此解组失败。

有什么方法可以指定 unmarshal 函数在 time.Time 解析中使用哪种日期格式?我想使用正确定义的类型并使用字符串来保存日期时间字段感觉不对。

示例结构:

type Transaction struct 

    Id int64 `xml:"sequencenumber"`
    ReferenceNumber string `xml:"ourref"`
    Description string `xml:"description"`
    Type string `xml:"type"`
    CustomerID string `xml:"namecode"`
    DateEntered time.Time `xml:"enterdate"` //this is the field in question
    Gross float64 `xml:"gross"`
    Container TransactionDetailContainer `xml:"subfile"`

返回的日期格式为“yyyymmdd”。

【问题讨论】:

这可能会有所帮助,即使它只处理编组。 groups.google.com/forum/#!topic/golang-nuts/IM3ZIcYXbz4 另外,看看code.google.com/p/go/issues/detail?id=2771 【参考方案1】:

我遇到了同样的问题。

time.Time 不满足xml.Unmarshaler 接口。而且您不能指定日期格式。

如果您不想在之后处理解析并且更愿意让xml.encoding 来处理,一种解决方案是创建一个带有匿名time.Time 字段的结构并使用您的自定义实现您自己的UnmarshalXML日期格式。

type Transaction struct 
    //...
    DateEntered     customTime     `xml:"enterdate"` // use your own type that satisfies UnmarshalXML
    //...


type customTime struct 
    time.Time


func (c *customTime) UnmarshalXML(d *xml.Decoder, start xml.StartElement) error 
    const shortForm = "20060102" // yyyymmdd date format
    var v string
    d.DecodeElement(&v, &start)
    parse, err := time.Parse(shortForm, v)
    if err != nil 
        return err
    
    *c = customTimeparse
    return nil

如果您的 XML 元素使用属性作为日期,则必须以相同的方式实现 UnmarshalXMLAttr。

见http://play.golang.org/p/EFXZNsjE4a

【讨论】:

这让我走上了正确的道路。当我改为使用 customTime time.Time 时更容易处理 - 无需将底层 time.Time 作为结构元素处理。 注意DecodeElement返回错误,如果不是nil,应该检查并返回。 出于好奇,使用类型定义而不是嵌入类型有什么缺点吗?即type customTime time.Time【参考方案2】:

从我阅读的内容来看,encoding/xml 有一些已知问题已被推迟到以后的日期......

要解决这个问题,不要使用time.Time 类型,而是使用string 并在之后处理解析。

我在获取时间时遇到了很多麻烦。解析以使用以下格式的日期:“Fri, 09 Aug 2013 19:39:39 GMT”

奇怪的是,我发现“net/http”有一个 ParseTime 函数,它接受一个完美运行的字符串...... http://golang.org/pkg/net/http/#ParseTime

【讨论】:

最奇怪的是,一旦我将日期字段的类型设置为字符串,一切都开始解析......【参考方案3】:

我已经实现了一个符合规范的 xml dateTime 格式,你可以在 GitHub 上找到它:https://github.com/datainq/xml-date-time

您可以在 W3C 中找到 XML dateTime spec

【讨论】:

【参考方案4】:
const shortForm = "20060102" // yyyymmdd date format

它是不可读的。但它在 Go 中是正确的。可以在http://golang.org/src/time/format.go阅读源码

【讨论】:

以上是关于在xml文件中,使用日期/时间的正确格式是怎样的的主要内容,如果未能解决你的问题,请参考以下文章

在 XML 日期时间上正确格式化日期时间

java返回前端的文件成了text/xml类型

如何使用角度引导日期选择器显示正确的日期格式?

JS判断电话/手机的格式是不是正确

C# 中解析此日期格式“Mon Oct 07 00:00:00 EDT 2013”​​的正确方法是啥?

日期格式不正确 java