Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vb.net 将字符串转换为独立格式的日期_Vb.net - Fatal编程技术网

Vb.net 将字符串转换为独立格式的日期

Vb.net 将字符串转换为独立格式的日期,vb.net,Vb.net,假设我有这个日期字符串。“02-01-2015” 字符串构建如下:dd-MM-yyyy,这意味着这个日期是2015年1月2日。我需要将此字符串作为日期插入我的SQL数据库。如何告诉数据库第一个整数是天而不是月,依此类推。这就是我到目前为止所尝试的 Dim dateTime As String = "02-01-2015" Dim dt As DateTime = Convert.ToDateTime(dateTime) Dim format As String = "yy

假设我有这个日期字符串。“02-01-2015”

字符串构建如下:dd-MM-yyyy,这意味着这个日期是2015年1月2日。我需要将此字符串作为日期插入我的SQL数据库。如何告诉数据库第一个整数是天而不是月,依此类推。这就是我到目前为止所尝试的

    Dim dateTime As String = "02-01-2015"
    Dim dt As DateTime = Convert.ToDateTime(dateTime)
    Dim format As String = "yyyy-MM-dd"
    Dim str As String = dt.ToString(format)

    MsgBox(str)
现在真正的问题开始了。我住在丹麦,我的电脑默认的系统时间格式与英语时间格式不同。当我在电脑上以系统上的默认时间格式运行此代码时,我得到消息:

2015-02-01
但如果我将系统时间格式更改为英语,我会得到以下msgbox:

2015-01-02

如何使其独立于系统时间格式?我可以将字符串拆分为年、月和日吗?或者,在转换为日期时,是否可以始终使用英语时间格式?我知道这对你来说似乎是一个简单的问题,但它已经挑战了我一段时间了。期待您的回复

我想出了解决办法:

 ' a date value in the string format specified:
        Dim xmlDate As String = "02-01-2015"

        ' create a DATE variable from that string in a known format:
        Dim newDate As Date = DateTime.ParseExact(xmlDate, "dd-MM-yyyy", Globalization.CultureInfo.InvariantCulture)
        MsgBox(newDate.ToString("yyyy-MM-dd"))

如果它是一个日期,db列是date,那么传递一个日期,您就不必告诉它任何有关日期的信息。网络数据库提供者非常适合处理网络日期。日期没有格式,也不能强制使用格式。格式就是向人们展示它们的方式。因此,根据活动区域性的不同,您会看到不同的情况。是的,但问题是如果我将此数据解析到数据库中。如果我在具有不同活动区域性的计算机上运行该程序,我可能会混淆日期。我刚刚试过这个,我的数据库中有两个不同的日期。一个写着2015-01-02,另一个写着2015-02-01,但它们是用相同的字符串和相同的代码转换而成的,只是使用了两种不同的计算机格式。不<在英国,代码>1月2日在丹麦是
1月2日
,在美国是
1月2日
。你看到的问题在更上游。如果db列是Date,那么根据您的上一个问题,源数据将被解析到错误的区域性。如果DB列类型为string,则可能是自食其果。DB列类型为date。。我知道所有3个国家的1月2日都是相同的,但这个字符串:02-01-2015通过相同的代码转换为我数据库中的2个不同日期。该行:2015-02-01和2015-01-02。这与一个国家以一种方式阅读和另一个国家以另一种方式阅读无关,因为这一错误将适用于两个日期,我应该在两种情况下都得到正确的格式,或者在两种情况下都得到不正确的格式。我只需要告诉vb.net日期字符串的格式是什么。我该怎么做呢?正如你所看到的,然后我告诉程序再次以这种格式将日期转换成字符串。yyyy-MM-dd。当返回2015-02-01时,则为第2个月(2月)。因此,当我转换为datetime而没有特定格式时,会出现问题。然后假设2015年1月2日是指2015年2月2日。