gpt4 book ai didi

c# - 如何格式化日期时间?输入 "yyyy-MM-dd"

转载 作者:行者123 更新时间:2023-11-30 15:56:45 34 4
gpt4 key购买 nike

我从数据库中查询了一些字段,计划开始日期是日期时间类型,计划开始日期可以为空,我想将计划开始日期格式化为“yyyy-MM-dd”

            DataTable dt = ds.Tables[0];
var query = dt.AsEnumerable()
.Select(dr =>
new InitOverview
{
IID = string.IsNullOrEmpty(dr.Field<string>("IID").ToString()) ? "" : dr.Field<string>("IID"),
ProjectName = string.IsNullOrEmpty(dr.Field<string>("ProjectName")) ? "" : dr.Field<string>("ProjectName"),
TeamLead = string.IsNullOrEmpty(dr.Field<string>("TeamLead")) ? "" : dr.Field<string>("TeamLead"),
Status = string.IsNullOrEmpty(dr.Field<string>("Status")) ? "" : dr.Field<string>("Status"),
OverallStatus = string.IsNullOrEmpty(dr.Field<string>("OverallStatus")) ? "" : dr.Field<string>("OverallStatus"),
Planstartdate = dr.Field<DateTime?>("Planstartdate"),
Planenddate = dr.Field<DateTime?>("Planenddate"),
Actualstartdate = dr.Field<DateTime?>("Actualstartdate"),
Actualenddate = dr.Field<DateTime?>("Actualenddate")
}
).ToList();

谁能帮忙实现一下?谢谢

最佳答案

假设您有一个可以为 null 的 DateTime 存储在一个变量中,您需要检查它是否为 null。然后您可以访问基础值并将其转换为字符串。 Nullable types提供一个 bool 属性 HasValue,您应该在尝试使用底层对象之前检查它。

using System;

public class Program
{
public static void Main()
{
DateTime? actualStartDate = DateTime.Now;

if(actualStartDate.HasValue)
{
string s = actualStartDate.Value.ToString("yyyy-MM-dd");
Console.WriteLine("value: " + s);
}
}
}

fiddle here .

如果你想在你的对象初始值设定项中执行此操作,它看起来像这样,使用 ternary operator :

new InitOverview
{
Planstartdate = dr.Field<DateTime?>("Planstartdate").HasValue
? dr.Field<DateTime?>("Planstartdate").Value.ToString("yyyy-MM-dd") : "no date";
}

fiddle here .

但是,我要提醒您,此时将其转换为字符串可能不是一个好主意。在代码中,您通常应该将日期保留为实际需要显示给用户的日期,这样您就可以尽可能地延迟它。只有在您的应用程序的 View 层中,您才应该真正将日期转换为字符串。这使 API 更简洁(无需再次将其转换为日期来操作它)并确保根据用户的文化设置轻松转换为正确的格式以显示给用户。

此外,您还在进行无聊的数据库记录与 .NET 对象的连接。这很乏味而且浪费时间。您应该使用微型 ORM,例如 Dapper并使它更清洁。可能是:

using (var connection = new SqlConnection(connectionString))
{
return connection.Query<InitOverview>(selectStatement).AsList();
}

关于c# - 如何格式化日期时间?输入 "yyyy-MM-dd",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46209705/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com