+ 2020.11.10
상당히 강력하게 해석을 해주는데 문제는.. 5/1/2008이 5월 1일인지 1월 5일인지 모르겠는데
일단은 "월/일/년" 으로 해석을 해준다. 다른 언어권에서도 저렇게 해주려나?
DateTime.Parse("5/1/2008 8:30:52 AM", System.Globalization.CultureInfo.InvariantCulture)
[링크 : https://docs.microsoft.com/ko-kr/dotnet/api/system.datetime?view=netcore-3.1]
---
[링크 : https://j07051.tistory.com/590]
[링크 : https://stackoverflow.com/questions/15203534/convert-todatetime-how-to-set-format]
'Programming > c# & winform' 카테고리의 다른 글
winform c# 폰트 바꾸면 다이얼로그 크기가 바뀐다? (2) | 2020.11.12 |
---|---|
C# 시간 관련 클래스 (0) | 2020.11.10 |
c# 문자열을 시간으로 (6) | 2020.11.06 |
c#에서 ini 파일 사용하기 (0) | 2020.11.05 |
C# UTC -> 지역시간 (0) | 2020.11.05 |
c# gps(nmea parser) (0) | 2020.11.05 |
댓글을 달아 주세요
DateTime.ParseExact로 사용하시는 포맷 몇개 만들고 분기해주시면 편할겁니다.
2020.11.11 11:38 [ ADDR : EDIT/ DEL : REPLY ]string datestring = "05/01/2008 18:15:11";
DateTime a = DateTime.ParseExact(datestring , "MM/dd/yyyy HH:mm:ss" , CultureInfo.InvariantCulture , DateTimeStyles.None);
MessageBox.Show(a.ToString());
string datestring2 = "2008/05/01 18:15:11";
DateTime b = DateTime.ParseExact(datestring2 , "yyyy/MM/dd HH:mm:ss" , CultureInfo.InvariantCulture , DateTimeStyles.None);
MessageBox.Show(b.ToString());
둘다 2008년 5월 1일로 인식합니다.
https://docs.microsoft.com/ko-kr/dotnet/api/system.datetime.parseexact?view=net-5.0#System_DateTime_ParseExact_System_String_System_String_System_IFormatProvider_
매번 좋은 조언 감사합니다.
2020.11.11 11:54 [ ADDR : EDIT/ DEL ]다른 글에서 적어놨는지 모르겠지만
실코드에서는 ParseExact로 원하는 포맷으로 파싱해서 사용중이긴 합니다.
아무튼 궁금한건.. MM/DD/YY 인지
DD/MM/YY인지 어떻게 판별할 것인가 인데.. 반대로 DD/MM/YY로 쓰는 국가가 있는지 모르겠네요.
DMY도 있고, MDY도 같이 존제합니다.
2020.11.11 15:11 [ ADDR : EDIT/ DEL : REPLY ]https://en.wikipedia.org/wiki/Date_format_by_country
여기를 참조해보시면 나라별 DateTime 포멧이 나옵니다.
국가코드를 받아오는건 C#에서
https://docs.microsoft.com/ko-kr/dotnet/api/system.globalization.regioninfo.twoletterisoregionname?view=net-5.0
를 통해 받아오신다음 타겟 국가코드를 분기하고, 위에 위키를 참조해서 YDM인지 DMY인지 MDY인지 판별하여,
분기하는것이 제일 좋아보입니다.
그냥 시간만 받아온 상태면 M또는 D위치에 둘중하나가 12가 넘지않으면 텍스트만으로 가져오는 방법은 없을것 같습니다.
찾던 자료였는데 위키는 검색해볼 생각을 못했네요 ㅠㅠ
2020.11.11 15:14 [ ADDR : EDIT/ DEL ]제가 찾던 키워드가 아니었는지 전혀 생각치 못한 좋은 내용 감사드립니다.
그리고 M/D가 12를 넘지 않았을 경우를 판별하는건 12일을 넘지 않을 경우 판별이 불가능한 경우가 존재할 수 있기에 좋은 방법은 아닐듯 합니다. timezone에 맞춰서 date format이 어떻게 되나 보도록 하겠습니다.
만약 시간 저장과 불러오기를 같이 처리하는 프로그램을 만드시는 경우는, OLE 값을 저장해서 다시 파싱하는게 가장 좋습니다.(1899 00:00:00 12월 30일 부터 얼마나 지났는지 절대적인 값으로 표현 [double])
2020.11.11 15:43 [ ADDR : EDIT/ DEL : REPLY ]나라별로 표현방식이 달라도 OLE값 자체는 절대적이여서 오류가 날 확률이 없기때문에, 아직도 많이 쓰이는 방법중 하나죠.
DateTime 클래스 내부에서도 OLE 변환 함수를
FromOADate와 ToOADate로 구현해주니, 크게 만드시는데 어려움은 없으실 겁니다.
OLE 약자를 찾아봐야겠네요 ^^
2020.11.11 16:43 [ ADDR : EDIT/ DEL ]아무튼 DateTime과 DateTimeOffset 오가면서 시간 변경하는 법도 있고 Timezone 등을 이용해서 시간대 변경도 가능한걸 보니 상당히 강력하게 API를 잘 짜둔것 같습니다.