2008-10-09 2 views
3
  1. VB6 Date 데이터 형식의 정밀도는 몇 분의 1 초 정도입니까?
  2. 초 단위로 표시하려면 어떻게 포맷합니까?

나는 몇 년 동안 부재중이었던 VB6을 다시 방문하고 있으며, 나에게 익숙한 것을 기억하지 못하기 때문에. 내 메모리가 유출 (hur hur hur)하기 때문에 태그를 넣는 것을 고려했습니다. VB6 날짜 데이터 형식 : 정밀도 및 서식

나는 나중에이 API 호출을 발견하고, 그것을 작동하는 것 같다 :

Declare Sub GetSystemTime Lib "kernel32.dll" (lpSystemTime As SystemTime) 

Public Type SystemTime 
    Year As Integer 
    Month As Integer 
    DayOfWeek As Integer 
    Day As Integer 
    Hour As Integer 
    Minute As Integer 
    Second As Integer 
    Milliseconds As Integer 
End Type 

답변

3

1) 초 및

2) 방법이 없습니다.

1

내가 VB6의 날짜 데이터 유형이 두 번째의 분수를 처리 할 수 ​​있다고 생각합니다.

7

Date 데이터 유형은 범위 검사 (최소/최대 날짜 값)에 고려되는 시간을 더한 Double 데이터 유형을 기반으로합니다. 다시 말해 VBA가 강력하게 형식화 된 언어가 아니라는 점을 고려할 때 특별히 특별한 것은 없습니다.

연속체 (그리고 IMO가 있어야 함)에서 시간을 생각하면 Double이 적합합니다. 1 일 = 1 (정수) 인 배정 밀도 부동 소수점에 대한 정밀도는 효과적으로 소수 9 자리입니다. 따라서 Double 유형의 값 (따라서 Date 유형)은 하위 초 값을 편안하게 수용 할 수 있습니다.

그러나 당면한 문제 VBA (Now, DateSerial, DateDiff, DateAdd 등) 내의 시간적 함수 일초 최소 입도 (granularity)를 가지고있다. 초 단위 정밀도로 Double으로 저장된 날짜 값과 함께 사용하면 1 초로 반올림됩니다. VBA6 용으로 작성된 사용자 콘트롤 용 Ditto.

당신 당신은, 물론 (내가에서의 MS 데이터 그리드로 반올림하지 않고 초 미만의 SQL 서버 값을 읽기/쓰기 위해 StdDataFormat에 대한 래퍼 클래스를 구현하는 것을 기억합니다 필요한 시간 기능 당신 자신의 구현을 쓸 수 VBA)하지만 자신의 시간 데이터 유형을 롤링하는 것처럼 느껴질 것입니다 (아!)