我正在开发web api,我有要求让Json序列化器只将日期输入参数转换为 UTC 格式。
现在我正在使用此代码进行转换:
IsoDateTimeConverter converter = new IsoDateTimeConverter
{
DateTimeStyles = DateTimeStyles.AdjustToUniversal,
};
config.Formatters.JsonFormatter.SerializerSettings.Converters.Add(converter);
以上配置将在输入和输出日期参数上实现。
如何配置我的web api,有两个日期转换器,一个用于输入参数,另一个用于输出参数?
PS:
我想将日期输入参数转换为utc,但输出参数转换为ISO 8601
答案 0 :(得分:1)
我想到的最简单的解决方案是创建继承自IsoDateTimeConverter
并覆盖CanWrite
属性的自定义DateTime转换器,以便它始终返回false
。在这种情况下,转换器将仅用于deserializng输入,而不会用于序列化输出:
public class InputUniversalConverter : IsoDateTimeConverter
{
public override bool CanWrite => false;
public InputUniversalConverter()
{
DateTimeStyles = DateTimeStyles.AdjustToUniversal;
}
}
config.Formatters.JsonFormatter.SerializerSettings.Converters.Add(new InputUniversalConverter());