#vb.net
#vb.net
Вопрос:
Пожалуйста, взгляните на следующую веб-страницу: http://msdn.microsoft.com/en-us/library/3eaydw6e.aspx:
» Вы должны заключить литерал даты в числовые знаки (# #). Вы должны указать значение даты в формате M / d / гггг, например #31/5/1993 #. Это требование не зависит от вашего региона и настроек формата даты и времени на вашем компьютере «.
Теперь посмотрите на приведенный ниже код:
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles Me.Load
Dim str As String = "1-2-1999"
Dim dte As Date = CDate(str)
MsgBox(dte.Month)
End Sub
Вопросы:
1) Окно сообщения печатает: 2. Я бы ожидал, что он напечатает 1 на основе следующей цитаты: «Вы должны указать значение даты в формате M / d / гггг».
2) Строковый литерал: 1-2-1999, а не #1-2-1999 #, но в цитате говорится: «Вы должны заключить литерал даты в числовые знаки (# #)»
Комментарии:
1. нет необходимости создавать строку только для преобразования ее в дату, просто создайте дату напрямую (обычно это наоборот)
Dim dte As Date = New Date(1999, 1, 2)
(Y, M, D) порядок2. @Plutonix спасибо, дата берется из поля базы данных, поэтому ее будет сложно разобрать как 1999,1,2. Вы можете ответить на мой вопрос?
3. имеет ли база данных дату в виде типа даты или в виде строки?
4. @Plutonix , это тип даты в базе данных.
5. тогда вам должно быть хорошо, дата — это дата. проблема заключается в попытке использовать строки в качестве дат.
myDate = dbObject("OrderDate")
должно работать нормально. Британец увидит это как «D / M / Y», а Янк — как «M / D / Y» при отображении
Ответ №1:
Из MSDN: You must enclose a Date literal within number signs (# #). You must specify the date value in the format M/d/yyyy, for example #5/31/1993#.
Это не то, что вы сделали. Вы создали строку, затем преобразовали ее в дату. Для создания Date
переменной с использованием литерала:
Dim dte As Date = #1/2/1999#
Console.WriteLine(dte.Month) ' prints 1
Комментарии:
1. Спасибо 1. Еще одна вещь. Пожалуйста, посмотрите на эту веб-страницу: msdn.microsoft.com/en-gb/library/system.datetime.aspx . ДАТА и ДАТА-ВРЕМЯ, похоже, используются взаимозаменяемо. Вы знаете, почему?
2.
Date
это чистая вещь в mscorlib,DateTime
определяется как базовый системный тип / структура, но я думаю, что они просто используют Date в качестве сокращенияDateTime
. ВDateAndTime
пространстве имен VB также определено3. вы бы использовали date или datetime?
4. Я не думаю, что есть какая-то разница. конструктор для даты (как я использовал в первом комментарии) также принимает временные переменные. Я думаю, что DateTime — это, по сути, структура, которую реализует Date. Intellisence дает для них то же определение
5. Я вижу, как int64 является строгим, с которым реализован long. Спасибо.