我无法在Gatsby中格式化日期。我已经从Firestore中获取了一些数据。我获得的字段之一称为datePublished
,其中包含时间戳形式的数字(例如1576945502000)。确实,这确实是一个时间戳,但是它以number
格式类型保存到了Firestore中。
现在,我想使用graphql中的datePublished
函数格式化formatString
字段-如此处所述:https://www.gatsbyjs.org/docs/graphql-reference/#dates
但是我无法进行格式化。无论我尝试在graphiql中还是在我的网站上格式化字符串,都无法正常工作。这是我尝试过的代码:
query MyQuery {
allNewsFeed {
edges {
node {
published(formatString:"dddd Mo, YYYY")
}
}
}
}
这是我在graphiql中得到的错误消息:
类型为'NewsFeed'的字段'datePublished'上的未知参数“ formatString。”
如果深入研究,我会注意到firestore中的字段类型被列为number
,在graphiql文档资源管理器中它被列为FloatQueryOperatorInput
。
此外,我做了一个小实验,尝试在Firestore中保存与string
,number
和timestamp
相同的数字。字符串或数字格式均无效,无论出于何种原因,gatsby-firesource插件都不会以timestamp
格式插入字段。
所以我想知道,要使它在gatsby中工作该怎么办?
有什么想法吗?
谢谢。
答案 0 :(得分:0)
我遇到了类似的情况,盖茨比不接受日期字段上的“ formatString”,对我来说,解决此问题的方法是将字段格式更改为YYYY-MM-DD
,因此从02 06 2017
更改为2017-06-02
和gatsby提示该字段表示日期。
盖茨比似乎“读取”数据并猜测类型,并据此获得某些功能。
由于gatsby使用moment.js,所以我猜想YYYY-MM-DD
格式已被采用。
我使用的是MDX,因此更改日期字段的格式非常简单,因为它只是纯文本,我不确定您是否拥有与Firestore相同的功能,但我希望这至少能给您一些帮助尝试的想法。祝你好运!