2017-04-24 76 views
0

我编写了一个工作程序,以保持我们的项目跟踪访问数据库。代码是用VB.NET编写的使程序使用不同的语言/日期格式vb

事情是我用法语的日期使用计算机。整个事情是根据这种语言编码的。但现在我必须在该公司的所有电脑上安装该程序(有些是法文的,有些是英文的)。由于他们正在使用的另一个程序,我无法更改英文电脑的语言。

那么我怎样才能让我的程序与英文日期一起工作呢?

我试图检测计算机的语言是这样的:

CultureInfo.CurrentCulture.DisplayName 

然后到今天的日期转换法(我使用的是今天的日期比较它的到期日期“报警“阻止我们,当一个项目是今天迟到或因):

Today = Today.toString(CultureInfo.CreateSpecificCulture("fr-CA") 

但这似乎并没有要做到这一点,因为我的程序不加载之后以正确的方式。

如果您有任何想法,我很愿意看他们

谢谢你们

+0

很可能你实际上是在没有问题的地方创建问题。您需要关心日期格式的唯一原因是您需要从文件中读取存储日期或以文本格式保存到存储中。在任何其他情况下,日期都是二进制的,即只是数字,并且没有格式。例如,如果用户通过DateTimePicker控件输入日期,则每个用户都可以使用适合自己系统的日期格式,而在代码中,您可以从控件的Value属性中获取DateTime值,这是独立于任何格式。 – jmcilhinney

+0

请详细解释您在应用中如何使用日期,以便我们确定是否有问题需要解决。我期望没有。 – jmcilhinney

+0

当有人创建项目时,他必须用DateTimePicker选择交货日期,然后将项目保存到Access数据库。然后你有一个DataGridView,它显示你有一列“警报”的项目。如果交货日期高于今天的日期,那么您将发出警报(单元格变为红色)。现在,如果计算机设置为英语,则警报列中不会显示任何内容 –

回答

0

基于这样的描述,还有比你正在创建的其他都没问题。请勿将日期/时间转换为Strings,除非您确实需要Strings。你不。

DateTimePicker的情况下,您只需设置FormatLongShort,然后用户将看到以适合他们的系统,根据其当前的文化设置的格式的日期。在代码中,您从Value属性获得DateTime值,这是一个二进制值,因此格式不相关。

对于DataGridView,如果您有一列包含DateTime值,那么它们将以基于当前文化的格式显示。基础值是二进制的,因此它们没有格式,但网格必须使用格式才能显示。每个用户都会看到他们的期望,因为系统的文化设置将用于执行该格式。如果您不喜欢使用的格式,则可以将列的DefaultCellStyle.Format属性设置为“D”或“d”以分别匹配DateTimePickerLongShort格式。

正如我所说,这种列的单元格中的值是DateTime值,而不是Strings,因此格式无关紧要。如果您想将它们与今天的日期进行比较,那么您可以采用二进制格式,例如

If CDate(myDataGridViewCell.Value) > Date.Today Then 

在任何时候,您都不必担心格式,因为应用程序会在格式有问题的地方自动使用当前的系统区域设置。