vb.net 中的日期格式问题

Posted

技术标签:

【中文标题】vb.net 中的日期格式问题【英文标题】:Date format issue in vb.net 【发布时间】:2012-01-03 05:41:31 【问题描述】:

我正在尝试从文本框中解析日期并将其存储在日期变量中

Dim enddt_2 As Date = Date.ParseExact(txtenddt.Text, "dd/MM/yyyy", System.Globalization.DateTimeFormatInfo.InvariantInfo)  'txtenddt.Text
expenddt_1 = enddt_2.AddDays(-1)
enddt = enddt_2.ToString("dd/MM/yyyy")

enddt 是一个日期变量,当我将enddt_2 转换为字符串时,我得到的错误为

Conversion from string "17/01/2012" to type 'Date' is not valid.

让我澄清一下,如果文本框中的值是 17/01/2012 比解析后的值更改为 01/17/2012my系统区域和语言是 enddt_2 中的 dd/MM/yyyy),当我尝试转换为 dd/MM/yyyy 格式并存储到日期变量中时,出现上述错误.此错误仅出现在 12 之后的日期。即日期变量接受 MM/dd/yyyy 格式的日期。12 之前的日期工作正常,即对于从 1 到 12 的所有日期都没有错误。

如何让enddt 以 dd/MM/yyyy 格式存储日期。

【问题讨论】:

【参考方案1】:

enddtDate 变量,您不能在其中分配字符串值,也不能更改您的区域设置甚至日期/时间格式。

如果要存储字符串日期,请更改enddt 的类型。

 Dim enddt as String = enddt_2.ToString("dd/MM/yyyy")

【讨论】:

我希望它是日期变量,因为我需要稍后在代码中使用这些日期变量 @Ishan - 如果您自定义区域设置,则无需转换。只需检查 MsgBox(Date.Now.Today) 和 MsgBox(enddt_2.ToDay)【参考方案2】:

你试过了吗?

Dim enddt_2 As Date = DateTime.ParseExact("17/01/2012", "dd/MM/yyyy", _
                      System.Globalization.CultureInfo.InvariantCulture)
Dim newD As Date = enddt_2.AddDays(-1)

Dim xStr As String = "Original Date: " & enddt_2.ToString("dd/MM/yyyy") & vbCrLf
xStr &= "FormatedOriginalDate: " & enddt_2.ToString("MM/dd/yyyy") & vbCrLf
xStr &= "NewDate: " & newD.ToString("MM/dd/yyyy")
Console.Writeline(xStr)

输出:

Original Date:         17/01/2012
FormatedOriginalDate:  01/17/2012
NewDate:               01/16/2012

【讨论】:

以上是关于vb.net 中的日期格式问题的主要内容,如果未能解决你的问题,请参考以下文章

vb.net 2010日期格式和系统日期格式不一致,求解

Datatable 正在从我为 Windows 10 构建的 VB.NET 应用程序中的 SQL 查询结果中接收 (01\dd\yyyy) 格式的日期

ASP.NET vb.net 将月/日/年中的日历日期格式转换为具有日/月/年的日期对象

在 SQL 和 VB.NET 中检查日期是不是小于另一个

在页面加载时修复文本框中的日期格式

vb net中怎么样将字符串类型转换成日期型