首页 > 解决方案 > 防止时区影响

问题描述

在 post frontmatter 中,我使用这种日期格式:

---
date: 2020-10-23T01:11:32+03:00
---

在查询中,我使用这种格式:

frontmatter {
    date(formatString: "DD.MM.YYYY HH:mm:ss")
}

我期待23.10.2020 01:11:32,但得到22.10.2020 22:11:32

我怎样才能得到23.10.2020 01:11:32

加法1

这个标记:

<time className="post-date"><small>{post.frontmatter.date}</small></time>

这个查询:

export const pageQuery = graphql`
  query {
    site {
      siteMetadata {
        lang
        author
        description
        keywords
        title
        siteUrl
      }
    }
    allMarkdownRemark(sort: { fields: [frontmatter___date], order: DESC }) {
      nodes {
        excerpt
        fields {
          slug
        }
        frontmatter {
          title
          date(formatString: "DD.MM.YYYY HH:mm:ss")
          description
        }
      }
    }
  }
`

标签: gatsby

解决方案


您有多种方法可以绕过它。

最原生的,尝试locale在您的formatString过滤器中使用:

frontmatter {
    date(formatString: "DD.MM.YYYY HH:mm:ss", locale:"en") // en by default, change it to what you need
}

formatString使用提供的选项,在他们的文档momentjs中检查更多的语言环境和过滤器。

如果以前的方法不符合您的规范,您可以随时在 JavaScript 文件中使用结果,例如:

const date= props.data.allMarkdownRemark.nodes[0].frontmatter.date;
date.format('llll'); // will outpout something like Tue, Oct 27, 2020 7:27 AM

免责声明:请注意,到达日期的路径是伪造的,获取解决方法,没有路径。


推荐阅读