【问题标题】:make program to work with different language/date format vb使程序可以使用不同的语言/日期格式 vb
【发布时间】:2017-09-21 06:44:14
【问题描述】:

我编写了一个工作程序来跟踪链接到访问数据库的项目。代码是用VB.NET编写的

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

那么我怎样才能让我的程序使用英文日期呢?

我尝试用这种方式检测计算机的语言:

CultureInfo.CurrentCulture.DisplayName

然后将今天日期转换为法语(我使用今天日期将其与“警报”的到期日期进行比较,以防止我们在项目迟到或今天到期时):

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

但这似乎不是正确的方法,因为我的程序之后没有加载。

如果您有任何想法,我愿意阅读它们

谢谢大家

【问题讨论】:

  • 很可能您实际上是在创建一个没有问题的问题。您需要关心日期格式的唯一原因是您是否需要从存储中读取日期作为文本或作为文本保存到存储中。在任何其他情况下,日期都是二进制的,即只是数字,没有格式。例如,如果用户通过DateTimePicker 控件输入日期,那么每个用户都可以使用适合自己系统的日期格式来执行此操作,而在代码中,您可以从控件的Value 属性中获取DateTime 值,并且独立于任何格式。
  • 请准确解释您如何在应用中使用日期,以便我们确定是否有问题需要解决。我希望没有。
  • 当有人创建项目时,他必须使用 DateTimePicker 选择交付日期,然后将项目保存到 Access 数据库中。然后你有一个 DataGridView,它显示了你有“警报”列的项目。如果交货日期早于今天的日期,则您会收到警报(单元格变为红色)。现在,如果电脑设置为英文,报警栏中什么都没有出现

标签: vb.net date format cultureinfo


【解决方案1】:

根据该描述,除了您正在创建的问题之外,没有其他问题。除非您确实需要 Strings,否则请勿将日期/时间转换为 Strings。你没有。

对于DateTimePicker,您只需将Format 设置为LongShort,然后用户将根据他们当前的文化设置以适合其系统的格式查看日期。在代码中,您从Value 属性中获得DateTime 值,这是一个二进制值,因此格式无关紧要。

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

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

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

您无需担心格式问题,因为应用程序会在出现格式问题的任何地方自动使用当前系统区域性设置。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-05-21
    • 2018-08-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多