c# - 如何在没有本地化的情况下在 C# 中获取日期

标签 c# mysql date localization

我的 C# 应用程序必须从 MySQL 数据库中读取一些日期。我遇到的问题是日期格式取决于系统本地化设置。

我的问题是,无论本地化设置如何,我是否可以始终以 yyyy-MM-dd hh:mm:ss 和 yyyy-MM-dd 格式获取日期。

提前致谢!

最佳答案

如果您将日期存储为真实的日期或日期时间值,您的应用程序将取回原始二进制数据,并且在您创建日期值的字符串表示之前不会对其进行本地化。我的猜测是您正在查看调试器中的值或使用 Console.WriteLine(theValue);,这将使用当前语言环境。将非字符串值转换为字符串时,始终包含所需的格式和/或所需的区域性。

如果您将日期存储为字符串,您将始终必须确切地知道进入数据库的格式。

假设日期存储为 datedatetime:按原样处理值,不要将它们转换为字符串,直到需要将它们显示给一个用户:

DateTime theValue = theReader.GetDateTime(fieldOrdinal);
var theValueAsText = theValue.ToString(CultureInfo.InvariantCulture);
var specificTextRepr = theValue.ToString("yyyy-MM-dd HH:mm:ss");

theValueAsText 变量将是一个与特定区域性无关的字符串表示形式。 specificTextRepr 将是您的特定文本表示。

关于c# - 如何在没有本地化的情况下在 C# 中获取日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8787777/

相关文章:

mysql - 选择具有单个别名的多个列

mysql - 在 MySQL 中使用 0..1 :1. .n 表进行 SQL 自动清理

javascript - 在不更改 Moment 对象的情况下获取月份的第一天

c# - 导入MySQL时格式化数据表日期列

c# - 在后台线程上运行 "async"方法

c# - Unity 无法解析动态创建的类的实例

c# - Startup.cs 方法 app.MapSignalR() 不在 signalR-2.0 中生成集线器

c# - 列表框 Selected.value 抛出 null 异常

mysql - Laravel 查询生成器嵌套连接和别名

JavaScript 两个日期之间的差异错误为一小时