【发布时间】:2015-03-28 11:57:36
【问题描述】:
我的 C# winforms 程序将在以下国家/地区使用
United Kingdom : date format day-month-year , currency separator is '.'
United States : date format month-day-year , currency separator is '.'
Denmark : date format day-month-year , currency separator is ','
无论用户计算机上的区域设置如何,我都想让程序正常运行。我主要关心的是处理日期格式和货币字段 (语言翻译不是问题,因为程序只会显示英文文本)
为此,我决定将数据库中的所有日期以yyyy-mm-dd 格式保存,所有小数字段将以. 作为分隔符保存。
我使用 Danish_Norwegian_CI_AS collation 创建了数据库。
所以我假设数据将以上述datetime 格式和十进制格式保存,而不需要我做任何特别的事情。
我已将以下代码放入我的程序中
var cult = new CultureInfo("en-GB");
Thread.CurrentThread.CurrentCulture = cult;
Thread.CurrentThread.CurrentUICulture = cult;
CultureInfo.DefaultThreadCurrentCulture = cult;
CultureInfo.DefaultThreadCurrentUICulture = cult;
请根据您的经验告诉我上述代码是否足以使我的程序安全
【问题讨论】:
-
我希望您的数据库不会真正将小数和日期存储为字符串列。
-
Henk - 不,所有日期都存储在 datetime 列中,小数和货币值存储在小数列中
-
那么数据库中的日期将以yyyy-mm-dd格式保存不适用。
-
查询取决于您的 SQL 引擎愿意理解的内容(唯一的标准化格式是美国 m/d/y)。它不依赖于客户端的语言环境。
-
@HenkHolterman - 不,这取决于数据库服务器的语言环境。在英国 m/d/y 将被解释为 d/m/y。唯一的标准是 yyyy-mm-dd:我从来没有见过这种误解。
标签: c# .net sql-server datetime