내 진짜 목표는 DateTime.Parse에서 날짜 문자열을 Shell32 GetDetailsOf 확장 날짜 필드에서입니다. 내 디버깅을 진행하는 동안, 나는 똑같이 나타나는 문자열을 만들었고 DateTime은 그것을 파싱 할 수있었습니다. 메모리에서 2 개의 문자열을 볼 때, 그들은 다르게 보입니다.문자열이 shell32로 검색 됨 GetDetailsOf never '=='동일한 하드 코딩 된 문자열. DateTime.Parse와 구문 분석 할 수 없습니다
처음 몇 바이트 만 .....
S> 4C 2E 22 63 16 00 00 00 20 39 00 0E 2F 0E 00 20 35 00 층
Q> 4C 2E 22 63 11 00 00 00 39 00 2f 00 35 00 2f 00 32 00 30
문자열을 형식화하여 DateTime.Parse와 구문 분석 할 수있는 방법이 있습니까?
Shell32.Shell shell = new Shell32.Shell();
Shell32.Folder objFolder;
objFolder = shell.NameSpace(folder);
int i = 0;
foreach (Shell32.FolderItem2 item in objFolder.Items())
{
if (item.Type == "Windows Recorded TV Show")
{
mediaArray[i, 0] = objFolder.GetDetailsOf(item, 21); // serName
mediaArray[i, 1] = objFolder.GetDetailsOf(item, 254); // epName
mediaArray[i, 2] = objFolder.GetDetailsOf(item, 259); // desc
mediaArray[i, 3] = objFolder.GetDetailsOf(item, 258); // broad Date
DateTime dateValue;
CultureInfo culture;
DateTimeStyles styles;
styles = DateTimeStyles.AssumeLocal;
culture = CultureInfo.CreateSpecificCulture("en-US");
string s = mediaArray[i, 3].Normalize(); // Guessing this string isn't ASCII?
string q = "9/5/2014 12:00 AM";
if (s == q) { MessageBox.Show("They are the same."); } // Never Entered.):
MessageBox.Show(s+"\n"+q); // They appear exactly the same!
dateValue = DateTime.Parse(q, culture, styles); // parses correctly
dateValue = DateTime.Parse(s, culture, styles); // fails at runtime
i++;
}
}
두 번째 줄이 첫 줄에서 실패한 경우 올바르게 구문 분석한다는 것을 어떻게 알 수 있습니까? –
공정한 질문이지만 실제로는 런타임 전에 변수를 변경하고있었습니다. 내가 질문을 올렸을 때 나는 그 줄을 복사해서 그것을 잘못된 순서로 넣었다. 나는 다른 사람들을 버리지 않기 위해 원래의 글을 업데이트 할 것이다. – ttugates