【问题标题】:How to handle American (mm/dd/yyyy) datetime when (dd/mm/yyyy) is expected/wanted? [duplicate]当预期/想要(dd/mm/yyyy)时,如何处理美国(mm/dd/yyyy)日期时间? [复制]
【发布时间】:2020-12-09 14:42:45
【问题描述】:

我目前正在做一个项目,但遇到了一个小问题。 该项目位于 .NET 核心中,并且与 DateTime 验证有关。 让我们首先说我对 C# 和 .NET 很陌生。

我有一个包含几周的下拉列表(一周的开始和结束)。 从这里我提取了一周的开始,例如:14-12-2020 - 19-12-2020 => 14-12-2020。 下面的代码是为了确保您只能选择未来的一周。永远不应该出现这种情况的正常情况,但是使用检查元素可能会发生这种情况。

public IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
        {
            DateTime todayWeek = DateTime.Today;
            DateTime startOfWeek = todayWeek.AddDays(-1 * (int)todayWeek.DayOfWeek + 1);
            
            if (FutureWeek != null)
            {
                string dateString = FutureWeek.Split(' ').First(); // Cut off everything at first whitespace
                DateTime futureWeekDate = DateTime.Parse(dateString);

                if (futureWeekDate < startOfWeek)
                {
                    yield return new ValidationResult($"The chosen week can't be in the past");
                }
            }
        }

如果我在本地电脑上使用荷兰语/欧盟日期格式 (dd/mm/yyyy),此代码可以正常工作。但是,一旦我在本地电脑上将日期格式更改为美国 (mm/dd/yyyy),我就会遇到字符串 (14/12/2020) 不是有效日期时间的问题,因为它需要美国格式并且有没有第 14 个月。

是否有一种解决方案可以让我指定在整个项目中使用的全局时间格式,以确保本地时间格式不会影响我的程序?

【问题讨论】:

  • 欢迎来到本站。您应该添加语言标签(可能还有其他相关标签)。我们有太多的问题,所以我们通常按标签过滤问题。如果是这个问题,您可能没有多少相关的读者。

标签: c# validation datetime asp.net-core .net-core


【解决方案1】:

如果我理解正确,您可能需要设置日期格式。这样它总是一样的。

DateTime.Now.ToString("MM/dd/yyyy")

有关更多详细信息和答案的源代码,请参阅此 c 尖角:

Date formatting

编辑: 你可以使用不同的形式。因此,您也可以从年、日开始,添加更多选项。如果您继续遇到障碍,请随时询问更多信息。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-07-20
    • 2013-10-19
    • 2016-01-02
    • 1970-01-01
    • 1970-01-01
    • 2010-10-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多