Страница: 1 | 2 | 3 |
Вопрос: Работа со временем в VB.NET
Добавлено: 07.05.06 17:12
Автор вопроса: Alexei1
Ответы
Всего ответов: 35
Номер ответа: 31
Автор ответа:
Alexei1
Вопросов: 2
Ответов: 19
Профиль | | #31
Добавлено: 19.05.06 19:18
Я так понял не чего архитрудного тут нет? прсто сменить время нужно ну баксов 5-10 не больше нужен просто код
Номер ответа: 32
Автор ответа:
EROS
Вопросов: 58
Ответов: 4255
Профиль | | #32
Добавлено: 19.05.06 19:50
Разумеется нет! Особенно учитывая то, что я тебе все уже по полочкам разложил!!
И ты готов заплатить 10$ за то, чтобы не разбираться с SetLocalTime??? вот что лень людская делает.. ))
Не нужны мне твои $.. мне просто хочется знать.. ради чего все это? В какой задаче понадобилось меня локальное время в системе????
А вот и то, что тебе нужно..
<StructLayout(LayoutKind.Sequential)> _
Structure SYSTEMTIME
<MarshalAs(UnmanagedType.U2)> _
Dim wYear As Short
<MarshalAs(UnmanagedType.U2)> _
Dim wMonth As Short
<MarshalAs(UnmanagedType.U2)> _
Dim wDayOfWeek As Short
<MarshalAs(UnmanagedType.U2)> _
Dim wDay As Short
<MarshalAs(UnmanagedType.U2)> _
Dim wHour As Short
<MarshalAs(UnmanagedType.U2)> _
Dim wMinute As Short
<MarshalAs(UnmanagedType.U2)> _
Dim wSecond As Short
<MarshalAs(UnmanagedType.U2)> _
Dim wMilliseconds As Short
End Structure
Public Class Form1
Private Declare Function SetLocalTime Lib "kernel32.dll" (ByRef lpSystemTime As SYSTEMTIME) As Integer
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim LocalTime As New SYSTEMTIME
'Set local time to 19/05/2006 15:00
With LocalTime
.wYear = 2006
.wMonth = 5
.wDay = 19
.wDayOfWeek = 5
.wHour = 15
.wMinute = 0
.wSecond = 0
.wMilliseconds = 0
End With
SetLocalTime(LocalTime)
End Sub
End Class
Номер ответа: 33
Автор ответа:
Alexei1
Вопросов: 2
Ответов: 19
Профиль | | #33
Добавлено: 19.05.06 22:58
Спасибо!
Вот я скопировал 1 раз этот код, и он заработал теперь сделал так:
Imports System.Runtime.InteropServices
<StructLayout(LayoutKind.Sequential)> _
Structure SYSTEMTIME
<MarshalAs(UnmanagedType.U2)> _
Dim wYear As Short
<MarshalAs(UnmanagedType.U2)> _
Dim wMonth As Short
<MarshalAs(UnmanagedType.U2)> _
Dim wDayOfWeek As Short
<MarshalAs(UnmanagedType.U2)> _
Dim wDay As Short
<MarshalAs(UnmanagedType.U2)> _
Dim wHour As Short
<MarshalAs(UnmanagedType.U2)> _
Dim wMinute As Short
<MarshalAs(UnmanagedType.U2)> _
Dim wSecond As Short
<MarshalAs(UnmanagedType.U2)> _
Dim wMilliseconds As Short
End Structure
Public Class Form1
Private Declare Function SetLocalTime Lib "kernel32.dll" (ByRef lpSystemTime As SYSTEMTIME) As Integer
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim LocalTime As New SYSTEMTIME
'Set local time to 19/05/2006 15:00
With LocalTime
.wHour = TextBox1.Text
.wMinute = TextBox2.Text
End With
SetLocalTime(LocalTime)
End Sub
End Class
И у меня не работает , это у меня баг или я штото не так делаю, мало того что теперь и старый код не работает!? всё время меняется на 2:00 (это в первый самый раз задал), что я не так сделал? EROS извиняюсь за глупые вопросы, но это вопрос жизни и смерти
Номер ответа: 34
Автор ответа:
EROS
Вопросов: 58
Ответов: 4255
Профиль | | #34
Добавлено: 20.05.06 00:33
Слушай... да чего там мелочиться? Накинь пару сотен зеленых и я все сам напишу! И твои нервы целее будут, и мои!!
Imports Microsoft.VisualBasic.Information
<StructLayout(LayoutKind.Sequential)> _
Structure SYSTEMTIME
<MarshalAs(UnmanagedType.U2)> _
Dim wYear As Short
<MarshalAs(UnmanagedType.U2)> _
Dim wMonth As Short
<MarshalAs(UnmanagedType.U2)> _
Dim wDayOfWeek As Short
<MarshalAs(UnmanagedType.U2)> _
Dim wDay As Short
<MarshalAs(UnmanagedType.U2)> _
Dim wHour As Short
<MarshalAs(UnmanagedType.U2)> _
Dim wMinute As Short
<MarshalAs(UnmanagedType.U2)> _
Dim wSecond As Short
<MarshalAs(UnmanagedType.U2)> _
Dim wMilliseconds As Short
End Structure
Public Class Form1
Private Declare Sub GetLocalTime Lib "kernel32.dll" (ByRef lpSystemTime As SYSTEMTIME)
Private Declare Function SetLocalTime Lib "kernel32.dll" (ByRef lpSystemTime As SYSTEMTIME) As Integer
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Const ERR_NOTNUMBER As String = "Please, enter number value!"
Const ERR_NOTVALIDNUMBER As String = "Number is not valid!"
Dim sHour, sMinute As Short
Dim strHour As String = TextBox1.Text.Trim
Dim strMinute As String = TextBox2.Text.Trim
'Not number
If Not IsNumeric(strHour) Then ShowError(ERR_NOTNUMBER, TextBox1) : Return
If Not IsNumeric(strMinute) Then ShowError(ERR_NOTNUMBER, TextBox2) : Return
'Not short number
If Not Short.TryParse(strHour, sHour) Then ShowError(ERR_NOTVALIDNUMBER, TextBox1) : Return
If Not Short.TryParse(strMinute, sMinute) Then ShowError(ERR_NOTVALIDNUMBER, TextBox2) : Return
'Number out of time range
If sHour < 0 OrElse sHour > 23 Then ShowError("Value must be 0-23", TextBox1) : Return
If sMinute < 0 OrElse sHour > 59 Then ShowError("Value must be 0-59", TextBox2) : Return
Dim LocalTime As New SYSTEMTIME
'Get local time
GetLocalTime(LocalTime)
'Change & set local time
With LocalTime
.wHour = sHour
.wMinute = sMinute
End With
SetLocalTime(LocalTime)
End Sub
Private Sub ShowError(ByVal Message As String, ByVal focusedObject As TextBox)
If Message Is Nothing OrElse _
Message.Trim.Length = 0 OrElse _
focusedObject Is Nothing Then Return
MessageBox.Show(Message, "User error", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
focusedObject.SelectAll()
focusedObject.Focus()
End Sub
End Class
и теперь только попробуй сказать, что это НЕ РАБОТАЕТ!!!
Номер ответа: 35
Автор ответа:
EROS
Вопросов: 58
Ответов: 4255
Профиль | | #35
Добавлено: 20.05.06 02:32
А твоя ошибка в том, что..
.wMinute = TextBox2.Text
ты вместо числа типа Short подсовываешь ему String!!! ты что нибудь про типы данных слышал?
Кроме того.. ты указал только часы и минуты... и кто вместо тебя остальное будет присваивать???
Как может комп установить НУЛЕВОЙ ДЕНЬ, НУЛЕВОГО МЕСЯЦА И НУЛЕВОГО ГОДА???????