Global It Leader!!



 
 

VB VB .NET 날짜/시간 관련 함수

페이지 정보

작성자 no_profile 오원장 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 댓글 0건 조회 24,953회 작성일 10-07-22 00:12

본문

함수는 값을 반환하는 프로시저로, VB.NET는 응용 프로그램에서 사용할 수 있는 많은 내장함수를 제공한다. 기본적인 함수의   범주로는 변환, 날짜와 시간, 디렉토리 파일, 오류, 재무, 입력과 출력, 수학, 문자열 조작 등이 있다. 본 절에서는 이들 함수 중에서 가장 많이 사용되는 날짜와 시간함수를 다루고자 한다. 

  1) 날짜와 시간을 다루는 데이터형

VB .NET에서는 날짜와 시간을 다루는 Date형 데이터 형식이 있다. Date 형 변수는 서기 1년 1월 1일부터 9999년 12월 31까지의 날짜와 0:00:00(자정)부터 밤 11:59:59까지의 시간을 나타내는 IEEE 64비트(8바이트) 정수로 저장된다.

Date 값은 번호 기호(#)로 묶어야 하며 m/d/yyyy 형식을 가져야 한다(예: #5/31/1993#). Date 값을 String 형식으로 변환할 경우, 시스템이 인식하는 간단한 날짜 형식과 시스템에서 유효한 시간 형식(12 시간 또는 24 시간)으로 날짜 및 시간이 렌더링된다.

VB의 Date 형은 .NET의 System.DateTime 데이터 형식에 기반하고 있으며,  Convert.ToDateTime  같은 여러 함수는 .NET을 참조하고 있다. 변수를 선언할 때 두 방식을 모두 사용할 수 있다.

다음은 Date 형 변수의 사용 예이다.

    '날짜 형식의 변수에 직접 날짜 대입

    Dim dtTheBirthday As Date = #12/7/1963#

    '년, 월, 그리고 날/자를 매개변수로 제공해사 날짜를 초기화하기 위한 생성자 사용

    Dim dtMoon As New Date(1963, 12, 7)

    '날짜와 시간을 나타내는 문자열을 날짜 형식으로 변환하는 메소드의 사용

    Dim dtTheDate As Date = Convert.ToDateTime("Dec 7, 1963 5:00 PM")

 

NOTE : VBA와 VB 6.0에서의 Date 형의 저장방식

VBA(Visual Basic Application: MS-Access, MS-Excel 등에서 사용)와 VB 6.0에서 날짜 값은 Date형 데이터 형식의 정수 부분에 저장되고, 시간 값은 소수 부분에 저장된다. 정수 부분은 Date 데이터 형식의 시작 지점이 되는 1899년 12월 30일 이후로 경과한 날짜 수를 나타냅니다. 이 날짜 이전의 모든 날짜는 음수로 저장되고 이후의 모든 날짜는 양수로 저장됩니다. 따라서 1899년 12월 30일을 나타내는 날짜 값을 Double로 변환하면 0 으로 나타난다. 날짜에서 소수 부분은 자정 이후 경과한 시간을 나타냅니다. 예를 들어, 날짜 값의 소수 부분이 .75이면 그 날의 4분의 3이 경과하여 현재 시간이 오후 6시임을 뜻한다.

2) 현재 날짜와 시간 확인하기

VB 프로그램에서 현재 시스템의 날짜와 시간을 확인하는 경우가 자주 있다. 시스템의 날짜와 시간을 사용하는 예로는 다음과 같다.

  • 프로그램의 실행이 시작되는 로깅 시점

  • 주기적으로 작업을 실행하거나 일부 동작의 실행 시점

  • 프로그램의 속도 측정 등

현재 시스템의 시간을 Date 형 데이터 값으로 반환하는 함수에는 NowToday 가 있다.

  • Now 함수 : 현재 날짜와 시간을 반환함

  • Today 함수 : 현재 날짜와 자정으로 설정된 시간을 반환함, 현재 시간을  포함하지 않아서 날짜 범위를 비교할 때 유용하다.

예제: 

현재의 날짜가 2003년 4월 19일 오후 2시 25분이라면 아래의 코드를 실행하였을 때 그 출력결과는 다음과 같다.

Debug.WriteLine(Date.Now)   ---> 2003-04-19 오후 1:38:42

Debug.WriteLine(Date.Today)   ---> 2003-04-19 오전 12:00:00

 

3) 날짜와 시간의 표시형식

날짜와 시간 값이 문자열로 변환되었을 때, 기본적으로 날짜/시간 형식으로 나타난다. 그렇지만, 날짜를 출력하거나 텍스트 상자에 표현할 때, 좀 더 읽기 좋은 형식으로 출력하기를 원할 것이다. 숫자처럼 출력되는 날짜를 원하는 문자열 형태로 표시하기 위하여 표준 날짜형식 문자열을 사용하거나 또는 사용자 지정 날짜 형식 문자열을 사용할 수 있다.

형식 지정자

형식 지정자 이름
D 또는 d 날짜 패턴
T 또는 t 시간 패턴
Y 또는 y 년 월 패턴
M 또는 m 월 일 패턴

날짜와 시간 형식 문자열 예제

서식 문자열 출력 문자열
M/d/y

8-15-45

MM/dd/yyyy

08-15-1945

MM/dd hh:mm:ss tt 08-15 01:15:00 PM
MMMM d, yyyy H:mm 8월 15, 1945 13:15
dddd, MMM d, yyyy 월요일, 4 15, 1945

NOTE : 날짜와 시간 형식 문자열은 대소문자를 구분한다. 예를 들어, M은 월을 의미하고, m은 분을 의미한다. 

날짜의 형식을 변경하기 위해 Format 함수나 날짜 개체의 ToString 메소드에 문자열을 매개변수로 전달한다. 다음 예제 코드는  날짜 형식 문자열을 사용하는 방법을 보여준다.

예제:

Dim TheDate As Date = Now

Dim strOutput1, strOutput2 As String

strOutput1 = Format(TheDate, "M/d/yy")

strOutput2 = TheDate.ToString("MM/dd/yyyy")

Debug.WriteLine(strOutput1)

Debug.WriteLine(strOutput2)

출력결과 : 

4-21-03

04-21-2003

 

4) 날짜의 일부분 추출하기

VB는 내장된 날짜와 시간함수를 제공하여 시스템의 현재 날짜와 시간을 반환하고 문자열이나 다른 식에 기반을 둔 날짜 값을 발생시킬 수도 있다. 

VB는 날짜나 시간 값의 일부분을 꺼내는 함수 또는 개체의 속성을 제공한다. 다음 함수 또는 Date 개체의 속성은 주어진 Date 개체의 값의 일부분을 반환하는데 사용된다.

함수

예제

Date 개체 속성 예제

나타내는 값

Year()

Year(Now)

Year Now.Year

2003

Month()

Month(Now)

Month Now.Month

4

Day()

Day(Now)

Day Now.Day

3

Weekday()

Weekday(Now)

DayOfWeek Now.DayOfWeek

2

Hour()

Hour(Now)

Hour

Now.Hour

11

Minute()

Minute(Now)

Minute

Now..Minute

50

Second()

Second(Now)

Second

Now.Second

12

예제: 

MessageBox.Show("오늘은 " & Month(Now) & "월")

MessageBox.Show("오늘은 이번 주의 " & Weekday(Now) & "번째 일")

MessageBox.Show("지금은 " & Hour(Now) & "시")

MessageBox.Show("지금은 " & Minute(Now) & "분")

MessageBox.Show("지금은 " & Second(Now) & "초")

 

MessageBox.Show("오늘은 " & Now.Month & "월 " & Now.Day & "일")

5) 날짜와 시간 처리하기

날짜와 시간은 정수형이나 문자열 보다 Date 형을 사용해서 저장하는 장점 중의 하나는 날짜를 다루는 대량의 내장함수가 제공된다는 점이다. 앞에서 본 날짜의 일부분 추출과 관련된 함수들이나 표시형식과 관련된 함수들은  날짜와 시간과 관련된 데이터를 손쉽게 다룰 수 있게 한다. VB에서는 이들 외에도 날짜와 시간의 계산을 쉽게 하는 내장함수나 메소드를 풍부하게 제공한다.

Date 클래스에서는 AddDays, AddHours, AddMinutes, AddMiliseconds 같은 메소드가 제공되어 날짜나 시간의 계산을 용이하게 한다.

예제: 

Dim dtThirtyDaysAgo As Date

'시스템 날짜에서 30일을 뺀다.

dtThirtyDaysAgo =

Date.Today.AddDays(-30)

 

다음 함수는 날짜와 시간을 계산하고 반환하는 함수이다.

함수

설명

DateSerial(년,월,일)

지정된 년,월,일을 날짜형 데이터로 반환한다.

TimeSerial(시,분,초)

지정된 시,분,초를 날짜형 데이터로 반환한다.

DateValue(날짜 형식 문자열)

지정한 날짜(문자열)을 날짜형 데이터로 변환한다.

TimeValue(시각 형식 문자열)

지정한 시각(문자열)을 날짜형 데이터로 변환한다.

DatePart(interval, date1)

지정한 날짜의 지정된 부분을 가진 정수값을 반환한다.

DateAdd(interval, date1,date2)

지정된 시간 간격을 더하여 날짜형 데이터를 반환한다.

DateDiff(interval, date1, date2)

지정된 날짜 2개의 시간 간격을 명시하는 숫자(Long형)을 반환한다.

예제 :

dtTheDate = DateSerial(2003, 4, 19)

dtTheTime = TimeSerial(12, 22, 33)

dtTheDate = DateValue("Aug 16, 2003")

dtTheTime = TimeValue("12:22 PM")

lngTheDate = DateDiff(DateInterval.Day, Date.Today, dtOpenDate)

 

<연습문제> 이 달의 마지막 날 구하기

' 다음 코드는 현재 달의 마지막 날을 계산한다.

'이것은 다음 달의 첫번째 날에 대한 일련번호를 발생시키고 1일을 빼면 된다.

Dim dtLastDayofMonth As Date

dtLastDayofMonth = DateAdd(DateInterval.Day, -1, DateSerial(Year(Now), Month(Now) + 1, 1))

MessageBox.Show("이번 달의 마지막 일은 " & dtLastDayofMonth & "입니다.")

 

한편, VB .NET에서는 시간 계산을 위한 TimeSpan 클래스를 제공한다. TimeSpan 클래스는 날짜와는 독립적인 시간을 표현한다. 다음 예제 코드는 12,345분을 나타내는 TimeSpan 변수 MyInterval을 만들어 TimeSpan 클래스의 여러 메소드를 보여준다.

예제:

Dim MyInterval As TimeSpan

MyInterval = TimeSpan.FromMinutes(12345)

Debug.WriteLine("Number of Days : " & MyInterval.Days)

Debug.WriteLine("Number of Hours : " & MyInterval.Hours)

Debug.WriteLine("Number of Ticks : " & MyInterval.Ticks)

출력결과 :

Number of Days : 8

Number of Hours : 13

Number of Ticks : 7407000000000

NOTE : TimeSpan.Ticks 속성은 VB에서 가장 정밀한 시간 측정 단위이다. 이것은 시간의 간격을 100 Nanosecond로 나타내며, Long 형식의 값으로 저장한다. 이것은 컴퓨터의 성능측정에 많이 사용된다. 

[이 게시물은 오원장님에 의해 2013-02-28 16:42:18 오피스팁에서 이동 됨]

댓글목록

등록된 댓글이 없습니다.

전체 440
게시물 검색
컴퓨터언어 목록
번호 제목 글쓴이 조회 날짜
220 VB no_profile 오원장 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 7469 06-25
219 VB no_profile 오원장 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 8034 06-25
218 VB no_profile 오원장 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 13004 06-24
217 VB no_profile 오원장 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 8539 06-24
216 VB no_profile 오원장 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 9231 06-17
열람중 VB no_profile 오원장 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 24954 07-22
214 VB no_profile 오원장 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 9922 07-21
213 VB no_profile 오원장 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 8411 07-21
212 VB no_profile 오원장 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 8725 07-21
211 VB no_profile 오원장 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 8113 07-20
210 VB no_profile 오원장 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 10036 07-15
209 VB no_profile 오원장 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 8110 07-14
208 VB no_profile 오원장 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 7421 07-14
207 VB no_profile 오원장 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 8897 07-13
206 VB no_profile 오원장 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 8962 07-13
205 VB no_profile 오원장 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 7568 07-08
204 VB no_profile 오원장 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 7251 07-08
203 VB no_profile 오원장 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 8598 07-08
202 VB no_profile 오원장 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 8090 07-08
201 VB no_profile 오원장 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 7887 07-08