当前位置: 首页 > 知识库问答 >
问题:

NET Core 3.1中的仅日期属性

连志义
2023-03-14

我正在将C#API从.NET Framework迁移到.NET Core 3.1。

我要求某些字段仅返回yyyyMMdd(无时间),而其他字段将返回完整的日期时间值(日期和时间)。

在过去。NET框架世界,我们可以做一个这样的快速转换器:

public class OnlyDateConverter : IsoDateTimeConverter
{
    public OnlyDateConverter()
    {
        DateTimeFormat = "yyyyMMdd";
    }
}

在我的模型中使用它,就像

[JsonConverter(typeof(DateTimeConverter))]
public DateTime OrderDate { get; set; }

这是行不通的。网芯3.1。

当我通过Swagger调用它时,返回的JSON是:

“订单日期”:“2002-05-22T00:00:00”

我知道您可以在<code>启动中添加<code>JsonSerializerOption</code>。cs,但这将强制所有日期使用相同的格式。我需要挑选。

我试过:

  • 但是,在制作多个json转换器时,它们从未被调用/work
  • [数据类型(DataType.Date)]
  • [JsonConverter(typeof(DateTimeConverter))]

我花了一整天在这上面。我希望有人已经这样做了,并能指出我愚蠢的错误。

共有1个答案

萧展鹏
2023-03-14

这个代码对我有用

在输出模型中添加以下内容:

[DataType(DataType.Date)]
[JsonConverter(typeof(JsonDateConverterExtension))]
public DateTime? DateOfBirth { get; set; }

其中JsonDateConverterExtension为:

public class JsonDateConverterExtension : JsonConverter<DateTime?>
{
    public override DateTime? Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options) 

       => DateTime.ParseExact(reader.GetString(),
              "yyyy-MM-dd", CultureInfo.InvariantCulture);


    public override void Write(Utf8JsonWriter writer, DateTime? value, JsonSerializerOptions options)

     => writer.WriteStringValue(value?.ToString("yyyy-MM-dd", CultureInfo.InvariantCulture));
}
 类似资料:
  • 是否可以允许datePicker只显示日期而隐藏年和月? 我有两个活动,在活动A中,我有datePicker,它只显示月份和年份。在活动B中,我希望datePicker只显示日期,但无法从Internet上找到任何解决方案。 活动A截图 活动B

  • 如何向MaterialDatePicker添加约束以强制用户选择仅介于两个日期之间的日期?

  • 问题内容: 在SQL语句中,如何比较保存为TIMESTAMP的日期和YYYY-MM-DD格式的日期? 例如: 我希望此查询返回指定日期中所有带有时间戳的行,但它仅返回具有午夜时间戳的行。 谢谢 问题答案: 您可以使用该函数提取时间戳记的日期部分: 但是,如果您在timestamp列上有索引,则这样做会更快,因为它可以利用索引:

  • 我不熟悉编码和stackoverflow,我们正在使用logback来记录我们的应用程序,现在我们正在使用{fileName}d{yyyy-MM-dd}。基于时间的滚动策略(每天滚动)的日志命名约定,并将30天设置为日志存储在应用程序中的最长时间。我们需要将命名约定更改为仅日期格式({fileName}.%d{dd}.log)。但是我们得到“fileNamePattern中的日期格式将导致归档日志

  • 为了实现这一点,我使用碳通过模型突变体转换日期。这意味着,首先我有日期: 我的变种人有以下几种: 现在,除了一个领域:“policy_cancellation”,一切都很好 当从表单向数据库插入数据时,如果policy_cancellation为空,则提交成功,但如果有数据,则PDO返回错误,例如: 触发以下命令: 另一个奇怪的情况(至少对我来说)是,在policy_cancellation突变体

  • 问题内容: 我在数据库中有时间戳,在应用程序中我有日期。我喜欢编写hibernate标准,以便hibernate可以提取所有与日期匹配的条目,而不是时间部分。例如 在数据库时间戳记中 2011-12-01 15:14:14 在应用程序中,我确实具有java.util.Date,默认情况下具有时间部分。 我的问题是,当我使用以下代码从数据库中搜索条目时,我什么也没得到 提前致谢 问题答案: 如果您正