programing

문자열을 시간으로 변환

starjava 2023. 9. 14. 21:34
반응형

문자열을 시간으로 변환

저는 16:23:01 시간이 있습니다.사용해 보았습니다.DateTime.ParseExact, 작동이 안 돼요.

여기 내 코드가 있습니다.

string Time = "16:23:01"; 
DateTime date = DateTime.ParseExact(Time, "hh:mm:ss tt", System.Globalization.CultureInfo.CurrentCulture);

lblClock.Text = date.ToString();

라벨에 오후 04:23:01로 표시해주셨으면 합니다.

"16:23:01"은 "hh:mm:sstt"의 패턴과 일치하지 않습니다. 오전/오후 지정기가 없고, 16은 분명히 12시간 시계에 있지 않습니다.파싱 부분에서 해당 형식을 지정하고 있으므로 기존 데이터의 형식과 일치시켜야 합니다.원하는 항목:

DateTime dateTime = DateTime.ParseExact(time, "HH:mm:ss",
                                        CultureInfo.InvariantCulture);

(현재의 문화가 아닌 불변의 문화에 주목하십시오. 입력한 내용이 항상 콜론을 사용한다고 가정합니다.)

포맷을 원하는 경우hh:mm:ss tt, 그 부분을 넣어주셔야 합니다.ToString호출:

lblClock.Text = date.ToString("hh:mm:ss tt", CultureInfo.CurrentCulture);

아니면 더 나은(better yet)(IMO)은 "문화를 위한 긴 패턴이 무엇이든"을 사용합니다.

lblClock.Text = date.ToString("T", CultureInfo.CurrentCulture);

참고할 점은hh일반적으로 10보다 작은 숫자는 0-좌측 패드를 사용하지 않습니다.

(또한 Noda Time API를 사용하는 것도 고려해 보시기 바랍니다.LocalTimetype - "하루 중의 시간"에 더 적합한 일치).

string Time = "16:23:01";
DateTime date = DateTime.Parse(Time, System.Globalization.CultureInfo.CurrentCulture);

string t = date.ToString("HH:mm:ss tt");

이를 통해 필요한 결과를 얻을 수 있습니다.

string time = "16:23:01";
var result = Convert.ToDateTime(time);
string test = result.ToString("hh:mm:ss tt", CultureInfo.CurrentCulture);
//This gives you "04:23:01 PM"  string

사용할 수도 있습니다.CultureInfo.CreateSpecificCulture("en-US")모든 문화가 AM/PM을 표시하는 것은 아니기 때문입니다.

허용된 솔루션은 에지 케이스를 포함하지 않습니다.저는 4KB 스크립트로 이것을 할 방법을 찾았습니다.입력을 처리하고 데이터를 변환합니다.

예:

00:00:00 -> 00:00:00
12:01 -> 12:01:00
12 -> 12:00:00
25 -> 00:00:00
12:60:60 -> 12:00:00
1dg46 -> 14:06

당신은 그 생각을...https://github.com/alekspetrov/time-input-js 에서 확인해보세요.

언급URL : https://stackoverflow.com/questions/18919530/convert-string-to-time

반응형