gpt4 book ai didi

c# NodaTime 将日期格式更改为 yyyy-MM-dd HH :mm:ss

转载 作者:行者123 更新时间:2023-11-29 13:03:51 24 4
gpt4 key购买 nike

我在项目的大部分代码中使用 NodaTime。我获取 LocalDateTime 作为值,需要更改格式以将其作为日期时间字段插入 MySQL 数据库。

我见过一些关于 OffSetPattern 的东西,但不知道如何使用它。

这是我尝试将其写入数据库的地方。

public void SetDataLog(Controller controllerInfo, LocalDateTime time, string count)
{
var count2 = Convert.ToInt32(count);

var sql = "INSERT INTO controller_activation_log (controller_id, activations, date_created, date_created_timezone) VALUES(" + controllerInfo.controllerId + ", " + count2 + ", \'" + time + "\', \'UTC\')";
mysqldb.Write(sql);
}

LocalDateTime 格式为 04/10/2014 10:45:02(示例)我需要将 2014-04-10 10:45:02 作为字符串。

我尝试过字符串,但显然这在这种情况下不起作用。我已经看到一些关于创建模式并解析它的内容,但我不明白如何做到这一点,因为我在 NodaTime 的任何地方都没有看到这一点?一般来说,对 NodaTime 和 c# 来说还是新手,所以也许我错过了一些相对简单的东西。任何人都可以帮助获取我需要的格式吗?

最佳答案

如果您正在使用 LocalDateTime 并且只需要以特定方式将其格式化为字符串,那么只需这样做:

string s = time.ToString("yyyy-MM-dd HH:mm:ss", CultureInfo.InvariantCulture);

您必须传递格式提供程序,在您的情况下应为 CultureInfo.InvariantCulture

但是,您不应该将日期作为字符串传递,或者通过插入字符串参数来构建 SQL 语句。请参数化您的查询,并使用适当的数据类型!

在 MySQL 中,您应该使用 DATETIME 类型(用于存储 NodaTime LocalDateTime)。请参阅the MySQL docs对于不同的日期/时间数据类型。

在传入参数时,您还需要调用 .ToDateTimeUnspecified(),因为 MySQL 客户端库无法理解 Noda Time 类型,但它理解日期时间

MySqlCommand cmd = new MySqlCommand();
cmd.Connection = yourConnection;
cmd.CommandText = yourSQLString; // use parameter placeholders like "@time"
cmd.Prepare();

cmd.Parameters.AddWithValue("@time", time.ToDateTimeUnspecified());
// and the rest of your parameters...

cmd.Parameters.ExecuteNonQuery();

此外,当您从 LocalDateTime 开始时,在 SQL 语句中将“UTC”硬编码为时区是很奇怪的。如果您正在编写 UTC,您可能应该从 Instant 开始。

关于c# NodaTime 将日期格式更改为 yyyy-MM-dd HH :mm:ss,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22992897/

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