【问题标题】:Why is DotLiquid or Azure Logic Apps automatically converting my date field?为什么 DotLiquid 或 Azure 逻辑应用会自动转换我的日期字段?
【发布时间】:2020-07-08 22:37:51
【问题描述】:

我有一个包含日期字段的液体模板,我根本没有使用任何过滤器,但它正在从2020-04-11T22:02:11Z UTC 转换为4/11/2020 10:02:11 PM。这是 DotLiquid 或 Azure 逻辑应用程序的预期行为吗?我怎样才能防止它这样做?

【问题讨论】:

    标签: liquid azure-logic-apps dotliquid


    【解决方案1】:

    我过去也遇到过同样的问题,即使是字符串,liquid 也会自动将日期时间从2020-04-11T22:02:11Z 转换为4/11/2020 10:02:11 PM。作为一种解决方法,我们可以使用日期格式将其转换为原始日期时间。

    例如,我有一个json如下:

    {
        "datetime": "2020-04-11T22:02:11Z"
    }
    

    我们可以这样使用液体贴图:

    {
        "datetime":"{{content.datetime | Date: "yyyy-MM-ddTHH:mm:ssZ"}}"
    }
    

    之后,我们可以得到原始的日期格式为2020-04-11T22:02:11Z

    希望对你有帮助~

    【讨论】:

    • 谢谢,快点。您使用的是 DotLiquid 或 Logic Apps 还是只是普通的液体?
    • @JoeyEng 我在逻辑应用中使用集成帐户(液体地图)对其进行测试。
    • K,因为我用普通液体进行了测试,它没有自动转换日期格式。我认为这可能是 DotLiquid,因为这是 Logic Apps 使用的,但只是猜测。
    • DotLiquid 使用 standard Microsoft date time format strings 作为默认值,因此您可以使用“O”格式字符串输出符合 ISO 8601 的日期时间属性。例如:"dateTime": "{{content.dateTime | Date: 'O'}}"
    【解决方案2】:

    如果您在本地运行 DotLiquid 并使用 Newtonsoft JSON 反序列化器,那么您可以告诉它不要解析日期时间字符串并将它们保留为字符串:

    JsonConvert.DefaultSettings = () => new JsonSerializerSettings
    {
        DateParseHandling = DateParseHandling.None
    };
    

    Azure 逻辑应用工作流引擎似乎反映了这种行为,因为我的日期时间字符串没有更改。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-06-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-03-20
      • 2016-10-11
      相关资源
      最近更新 更多