2016-08-22 2 views
0

저는 Java에서 C#으로 일부 코드를 다시 작성하고 있습니다. 불행하게도 대부분의 코드는 "해킹"되어 코드 작성 방법을 추측합니다. 지금 당장은 데이터베이스에 삽입물을 재현해야합니다.C#의 타임 스탬프 비교

삽입해야 할 시간 스탬프가 약간 혼란 스럽습니다. 현재 데이터베이스의 예를 들어 기록은 다음과 같습니다 10-AUG-10 05.02.57.347694000 PM

Values in current database

내 코드에서 나는 비슷한 무언가를 얻을 수있었습니다 :이 코드의 아이디어는 현재로 만든 타임 스탬프를 비교하는 것입니다 22-Aug-16 11.52.20.9857574 AM

마지막 60 초 내에 첫 번째 작업이 작성된 경우 일부 작업을 수행하십시오.

첫 번째 질문 :

어떻게 정확히 내가 모든 기록이있는 것으로 확인, 10-AUG-10 05.02.57.347694000을 재현 할 수있는 "000"는 말에, 나는 경우/다른 것을위한 필요합니까 또는 마지막을 유지하기 위해 어떤 기능이있다 파트 9 자릿수가 길어?

두 번째 질문 : 그것은 단지 숫자 인 경우

, 나는 내가 데이터베이스에서 값을 검색 할 수 있습니다 알고 다음 비교하지만, 형식은 이후 : 그 부분을 처리하는 방법을 정말 확실하지 10-AUG-10 05.02.57.347694000,

제안 사항이 있으십니까?


해결책 :

나는이 문제를 어떻게 해야할지에 대한 이해를 가지고 몇 가지 의견을 읽은 후. 일을 단순하게 유지하고 DateTime 변수를 만든 다음 뺄셈 메서드를 사용하여이 두 시간 사이에 몇 분의 차이가 있는지 확인하기로했습니다.

예 :
DateTime guidTimestamp; // 8/25/2016 10:02:47 AM
DateTime currentTimestamp = DateTime.Now;

public int calculateMinutes(DateTime dt1, DateTime dt2) 
    { 
      int min = 0; 
     try  
     {  
      min = (int)((dt1 - dt2).TotalSeconds);  
     }  
     catch (Exception ex)  
     {  
      Debug.WriteLine("Exception - Date Time error: " + ex.Message);  
     }  
     return min;  
    } 
+3

해당 입력란의 유형은 무엇입니까? 날짜/시간대가 아닌 경우 타임 스탬프가 아니며 STRING입니다.문자열이 직접 비교를위한 "좋은"형식이 아니기 때문에 문자열 연산의 크고 끔찍한 더미로 인해 직접 비교할 수있는 형식으로 다시 포맷해야합니다. –

+3

C# (또는 해당 언어의 모든 언어)에서 날짜 작업을 할 때 DateTime 개체를 사용하는 것이 훨씬 낫습니다. 이들을 비교할 때, 틱의 차이점을 가져 와서 TimeSpan을 작성한 다음 TimeSpan의 특성을 사용하여 차이점을 판별 할 수 있습니다. 귀하의 경우, 틱스 차이에서 TimeSpan을 만들고 Hours and Minutes (시간과 분) 속성을보고 모두 0인지 확인하십시오 (이는 60 초 미만의 차이를 의미 함). – Kevin

+3

http://stackoverflow.com/questions/341175/datetime-parse-and-making-it-work-with-a-specific-format이 문자열을 DateTimes로 변환하는 방법은이 문서를 참조하십시오. –

답변

2

DB에있는 필드의 데이터 형식은 string입니다. 당신은 그 값에 대해 큰 정확성을 가지고 다니지 않습니다. MSDN은 말합니다. 당신이 언급 한 바와 같이

코드의 다음 줄은 정확히 같은 형식으로 현재 날짜와 string을 생성합니다

DateTime.Now.ToString("dd-MMM-yy hh.mm.ss.ffffff tt", System.Globalization.CultureInfo.InvariantCulture).ToUpper() + "000" 

다음의 코드는 사용자 지정 형식으로 string에서 DateTime을 생성합니다

DateTime.ParseExact("10-AUG-10 05.02.57.347694 AM", "dd-MMM-yy hh.mm.ss.ffffff tt", System.Globalization.CultureInfo.InvariantCulture) 

milliseconds 부분에있는 3 개의 0을 제거하여 ParseExactstring 값으로 처리해야합니다. 원한다면 정규 표현식을 읽거나 하드 코딩 할 수 있습니다.

+0

감사합니다 @ 나는 당신의 코드가 정말로 유용하다는 것을 알았다! –