【问题标题】:Changing the format of DATETIME property in winform C#在winform C#中更改日期时间属性的格式
【发布时间】:2012-02-13 23:20:06
【问题描述】:

这段代码有什么问题?

Client c = new Client();
string format = "yyyy/MM/dd HH:mm:ss";
string dateAdded = now.ToString(format);
c.RegistrationDate = DateTime.Parse(dateAdded);

c.RegistrationDate 是客户端类中的一个 dateTime 对象,我希望它插入到我的数据库中。

但是,它不会将可怕的日期转换为我的 mysql 数据库中的格式。它总是说字符串格式不正确。我做错了什么???我应该将我的注册日期转换为字符串吗???谢谢

**编辑:对不起,我忘了提。 "now" 是now = DateTime.Now; 它获取日期和时间的当前时间。

【问题讨论】:

  • 你的now变量是什么类型的?如果它是DateTime,那么为什么要将其转换为string,然后再转换为DateTimeDateTime.Parse()
  • 因为我想转换它的格式所以我想我应该先把它转换成一个字符串来改变它的格式和改变它的类型^^。但我失败了……
  • 正如 Jon Skeet 已经指出的那样,DateTime 没有具有格式,它只是一个值。如果你想要一个格式化的字符串,那么你想要一个string,而不是DateTime,所以你根本不需要DateTime.Parse()
  • @DanielPryden:先生,这是否意味着我的客户端类中不应该有 DateTime 对象?我应该将其数据类型更改为字符串吗?谢谢...
  • 不一定。如果您使用 DateTime 值来构建字符串,那么那个 代码应该使用c.RegistrationDate.ToString(format)。您似乎对 value该值的表示 之间的区别存在根本性的误解。举个简单的例子,数字 42 是一个值,"42""forty-two""XLII" 都是同一值的表示

标签: c# winforms datetime datetime-format


【解决方案1】:

DateTime 没有格式 - 它只是日期/时间。 (请注意,无论是当地时间、UTC 还是其他任何问题。)

首先,您不应该像现在这样在文本之间进行转换:这只会带来麻烦。只需使用:

c.RegistrationDate = now;

...执行您需要的任何舍入。

您尚未展示如何尝试将值插入数据库。如果您将值包含在 SQL 语句中直接,那就可以解释了。您应该使用参数化 SQL 语句并直接在参数中传递值 - 无需转换。

如果您已经这样做了,请向我们展示您尝试用来插入数据的代码,我们会看看我们能做些什么。有关示例,请参阅documentation

【讨论】:

  • 感谢先生的回答。但是如果我尝试使用它,我发送到我的数据库的格式与我的数据库中的格式不匹配。它给了我一个错误。 T_T 我的数据库中还有一个注册日期,它是日期时间格式,但它的格式是 yyyy/MM/dd。 xD
  • @rjtubera:如果它确实是数据库中的日期/时间字段,则不需要关心格式。如果你使用参数应该是绝对没问题的——如果这给你一个错误,那么说出错误是什么。如果您不向我们提供信息,我们将无法帮助您。
  • 它给了我一个“不正确的日期时间值:'2/14/2012 8:10:35 AM' for column 'dateAdded' at row 1” 2012 年 2 月 14 日(日/月/ year) 是我发送到数据库的内容,但数据库想要的是(年/月/日)格式。
  • @rjtubera:但是参数化 SQL 是正确的做法。学会做正确的事,而不是试图绕过它。如果没有参数化 SQL,只要您有任何用户输入的文本,您就会受到 SQL 注入攻击。 SQL参数不是特别难,最好不要养成坏习惯。
  • @rjtubera:您可以使用带有正确格式字符串的ToString,但您不应该。为什么你如此强烈反对做正确的事?我已经链接到为您提供示例的文档。如果您现在只需花 5 分钟时间学习,从长远来看,它将为您节省很多的痛苦。
【解决方案2】:

我不认为 c# 代码有什么问题,除非我认为你必须这样做

string dateAdded = DateTime.Now.ToString(format);

否则我不确定“现在”是什么。

【讨论】:

    猜你喜欢
    • 2017-01-25
    • 1970-01-01
    • 2012-07-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-28
    • 2015-08-20
    • 1970-01-01
    相关资源
    最近更新 更多