2010-08-13 3 views
3

임 : VS2008, .NET 및 C#으로 작업 중이며 클라이언트 중 하나에 DATETIME 변수를 보내야합니다..NET Datetime을 형식으로 변환 정렬 가능한 날짜/시간 패턴 ("s");

문제는 날짜가 정렬 가능한 날짜/시간 패턴 ("s")으로 표시되기를 원하는 것입니다.

실제 날짜 시간을 가져 오면 Datetime 개체입니다. 주어진 형식으로 서식을 지정하면 이제 String 개체가되고 원하는 형식을 갖게됩니다. 하지만 이후에는 항상 원래 Datetime 형식으로 반환하기 때문에 같은 형식으로 해당 형식의 String에서 Datetime 개체를 만들 수 없습니다.

보다 구체적인 :

DateTime currTime = System.DateTime.Now; //(the format is "13/08/2010 09:33:57 a.m.") 

String date = String.Format("{0:s}", currTime);// (wanted format "2010-08-13T09:33:57") 

DateTime newDate = DateTime.Parse(date);// (original format again "13/08/2010 09:33:57 a.m.") 

IFormatProvider culture = new System.Globalization.CultureInfo("", true); //(Invariant Culture) 
String format = "s";       
DateTime fecha = DateTime.ParseExact(date, format, culture); // (original format again "13/08/2010 09:33:57 a.m.") 

원하는 형식으로 날짜 시간 개체를 가져 오는 방법이 있나요, 또는 날짜 객체가 주어진 형식을 사용하고 해당 문자열 형식을 포맷 할 수 없습니다?

답변

4

질문을 올바르게 이해하면 혼란 스럽다고 생각됩니다. DateTime 개체 자체는 형식을 지정할 수 없으므로 숫자 값 (DateTime.MinValue 또는 그 이후의 틱 수)을 필수적으로 사용해야합니다.

당신은 당신이 원하는대로 형식의 string표현DateTime 개체를 변환 할 수 있지만 실제 DateTime 객체를 변경하지 않습니다.

+0

downvoter가이 답변에 잘못된 점을 설명 할만큼 친절한가요? – fearofawhackplanet

+0

나는 그걸 상쇄하기 위해 나에게서 +1을 가져온다. – Rob

9

DateTime

들으 그냥 숫자입니다. 본질적인 "형식"이 없습니다. 문자열로 변환 될 때만 형식으로 렌더링됩니다. 당신이 문자열로 날짜 시간을 필요로 할 때마다 따라서, 당신은 당신이 그것을 원하는 형식으로 지정해야

String date = String.Format("{0:s}", currTime); 

이 조금 단락 할 수 있습니다. 당신이 DateTime 사용

String date = currTime.ToString("s"); 
+2

흠 .. 나는'DataTime' *을 두 번 입력했다. ?? Intellisense가 없을 때 어떤 일이 일어나는 지 확인하십시오 ... –

+0

다음 구문을 실행 한 후 문자열 날짜 = currTime.ToString ("s"); 출력은 입니다. 2014-01-29T11 : 25 : 29 이제이 DateTime 형식을 DateTime 형식의 변수에 저장할 수 있습니까? –

1

때마다 값을 문자열로 바꾸어야하는 곳 (예 : string.Format())에서 C#은 일반적으로 .ToString() 메서드를 호출합니다. DateTime 형식에서는 원하지 않는 형식의 .ToString() 메서드를 선언합니다.

그러나 DateTime에는 .ToString(IFormatProvider provider).ToString(string format)을 포함한 추가 방법이 있습니다.

대신

:

따라서, 당신은 아마 당신이 예를 들어, 적절한 .ToString 오버로드를 호출 하나에 해당 문자열과 같은 맥락에서 DateTime 변수의 모든 사용을 대체하면 당신이 원하는 것을 얻을 수 있습니다

var message = string.Format("The parcel was sent on {0}.", currTime); 

사용

var message = string.Format("The parcel was sent on {0}.", currTime.ToString("s")); 
관련 문제