DateTime에서 AM/PM 값을 가져오려면 어떻게 해야 합니까?
문제의 코드는 다음과 같습니다.
public static string ChangePersianDate(DateTime dateTime)
{
System.Globalization.GregorianCalendar PC = new System.Globalization.GregorianCalendar();
PC.CalendarType = System.Globalization.GregorianCalendarTypes.USEnglish;
return
PC.GetYear(dateTime).ToString()
+ "/"
+ PC.GetMonth(dateTime).ToString()
+ "/"
+ PC.GetDayOfMonth(dateTime).ToString()
+ ""
+ PC.GetHour(dateTime).ToString()
+ ":"
+ PC.GetMinute(dateTime).ToString()
+ ":"
+ PC.GetSecond(dateTime).ToString()
+ " "
????????????????
}
어떻게 하면 오전/오후를 받을 수 있습니까?dateTime
가치?
어때요?
dateTime.ToString("tt", CultureInfo.InvariantCulture);
string.Format("{0:hh:mm:ss tt}", DateTime.Now)
시간의 문자열 값이 표시됩니다.tt는 am/pm을 추가해야 합니다.
관련 항목을 볼 수도 있습니다.
문자열 형식을 사용하여 매우 간단합니다.
에.ToString("") :
"hh" ->> 01시부터 12시까지 12시간 시계를 사용하는 경우.
"HH" ->> 00시부터 23시까지 24시간 시계를 사용하는 경우.
"tt" ->> Am/Pm 지정자를 추가하는 경우.
23:12에서 오후 11:12로 변환 예:
DateTime d = new DateTime(1, 1, 1, 23, 12, 0);
var res = d.ToString("hh:mm tt"); // this shows 11:12 PM
var res2 = d.ToString("HH:mm"); // this shows 23:12
Console.WriteLine(res);
Console.WriteLine(res2);
Console.Read();
특히 다른 문화 언어를 가진 다른 언어를 가진 창에서 실행되는 동일한 코드가 동일한 코드로 다른 결과를 생성하기 때문에 당신이 다른 것에 신경쓸 필요가 없는 것은 시스템 문화입니다.
아랍어 문화로 설정된 창의 예는 다음과 같이 표시됩니다.
// 23:12 م
م는 저녁을 의미합니다.
다른 시스템 문화에서는 Windows 지역 및 언어 옵션에 설정된 내용에 따라 // 23:12 du로 표시됩니다.
Windows 국가별 및 언어 아래의 Windows 제어판에서 다른 형식을 변경하고 변경할 수 있습니다. -> 현재 형식(확인란)에서 변경...앱을 적용하여 앱을 다시 빌드(리빌드)하고 제가 말하는 것을 확인합니다.
그래서 > 현재 시스템의 문화가 영어로 설정되지 않은 경우 영어 이벤트에서 Am과 Pm Words를 강제로 보여줄 수 있는 사람은 누구입니까?
두 줄을 추가하는 것만으로도 쉽습니다 : ->
첫 번째 추가using System.Globalization;
비밀리에
이전 코드를 다음과 같이 수정합니다.
DateTime d = new DateTime(1, 1, 1, 23, 12, 0);
var res = d.ToString("HH:mm tt", CultureInfo.InvariantCulture); // this show 11:12 Pm
기본 영어 형식을 사용하는 불변의 문화 =>.
영어(또는 다른 언어) 지역 형식으로 설정된 창을 사용하더라도 오후를 아랍어 또는 특정 언어로 하고 싶은 또 다른 질문이 있습니까?
아랍어의 솔션 예:
DateTime d = new DateTime(1, 1, 1, 23, 12, 0);
var res = d.ToString("HH:mm tt", CultureInfo.CreateSpecificCulture("ar-AE"));
// 23:12 »가 표시됩니다.
내 시스템이 영어 지역 형식으로 설정된 경우 이벤트.다른 언어 형식으로 변경하려면 "ar-AE"를 변경할 수 있습니다.각 언어의 목록과 형식이 있습니다.
예:
ar ar-SA Arabic
ar-BH ar-BH Arabic (Bahrain)
ar-DZ ar-DZ Arabic (Algeria)
ar-EG ar-EG Arabic (Egypt)
big list...
다른 질문이 있으면 저에게 알려주세요.
그DateTime
항상 내부적으로 "미국"(그레고리안) 달력에 있어야 합니다.그래서 만약 당신이
var str = dateTime.ToString(@"yyyy/MM/dd hh:mm:ss tt", new CultureInfo("en-US"));
당신은 당신이 원하는 것을 더 적은 줄로 얻어야 합니다.
이게 굉장히 늦은 것 같다는 것을 압니다.하지만 그것이 누군가를 도울지도 모릅니다.
저는 일정의 일부를 AMPM으로 하고 싶어서 Andy가 조언한 것을 사용했습니다.
dateTime.ToString("tt");
파일을 저장할 경로를 구성하기 위해 그 부분을 사용했습니다.저는 AM이나 PM 중 하나를 받을 것이고 다른 것은 없을 것이라는 가정을 구축했습니다!
하지만 내가 그것의 문화가 영어가 아닌 PC를 사용했을 때 ..(나의 경우 아랍어) ..... 내 애플리케이션은 "tt" 형식이 오전이나 오후가 아닌 새로운 것을 반환했기 때문에 실패했습니다.
그래서 이것에 대한 해결책은 다음과 같은 두 번째 주장을 추가함으로써 문화를 무시하는 것이었습니다.
dateTime.ToString("tt", CultureInfo.InvariantCulture);
물론 시스템을 사용하여 추가해야 합니다.세계화; 당신의 파일 위에 나는 그것이 누군가에게 도움이 되기를 바랍니다:)
그것은 꽤 간단합니다.
Date someDate = new DateTime();
string timeOfDay = someDate.ToString("hh:mm tt");
// hh - shows hour and mm - shows minute - tt - shows AM or PM
+ PC.GetHour(datetime) > 11 ? "pm" : "am"
예를 들어, 날짜 시간을 포맷하는 더 나은 방법이 있습니다.
보낸 사람: http://www.csharp-examples.net/string-format-datetime/
string.Format("{0:t tt}", datetime); // -> "P PM" or "A AM"
같은 거.bool isPM = GetHour() > 11
그러나 날짜를 문자열로 포맷하려는 경우에는 직접 포맷할 필요가 없습니다.날짜 형식 지정 기능을 사용합니다.
@앤디의 대답은 OK입니다.하지만 24시간 형식 없이 시간을 보여주고 싶다면 다음과 같이 따를 수 있습니다.
string dateTime = DateTime.Now.ToString("hh:mm:ss tt", CultureInfo.InvariantCulture);
그 후에는 "10:35:20 PM" 또는 "10:35:20 AM"과 같은 시간을 얻을 수 있습니다.
이 방법으로 테스트할 수 있습니다.
Console.WriteLine(DateTime.Now.ToString("tt "));
출력은 다음과 같습니다.
AM
또는
PM
LongDateStringDate에 시간을 추가하려면 다음과 같이 형식을 지정할 수 있습니다.
DateTime date = DateTime.Now;
string formattedDate = date.ToLongDateString();
string formattedTime = date.ToShortTimeString();
Label1.Text = "New Formatted Date: " + formattedDate + " " + formattedTime;
출력:
New Formatted Date: Monday, January 1, 1900 8:53 PM
다른 선택사항은 올바른 형식을 얻기 위해 사용되는 기본 문화를 변경하는 것입니다.장점은 코드 전반에 걸쳐 새로운 형식이 사용된다는 것입니다.
CultureInfo.CurrentCulture = new CultureInfo("Fr-fr");
Console.WriteLine(DateTime.Now.ToString("t")); // 14:08
var customCulture = (CultureInfo)CultureInfo.CurrentCulture.Clone();
customCulture.DateTimeFormat.AMDesignator = "am";
customCulture.DateTimeFormat.PMDesignator = "pm";
customCulture.DateTimeFormat.ShortTimePattern = "HH:mm tt";
CultureInfo.CurrentCulture = customCulture;
Console.WriteLine(DateTime.Now.ToString("t")); // 14:08 pm
여러분이 쓸 수 시 방 쉬 더 이 법 습 니 운 있 을 형 식 다 니 ▁here 있 ▁the 습(hh:mm:ss tt)
원하는 경우 별도로 표시합니다.
string time = DateTime.Now.Hour.ToString("00") + ":" + DateTime.Now.Minute.ToString("00") + ":" + DateTime.Now.Second.ToString("00") + DateTime.Now.ToString(" tt");
또는 간단히:
DateTime.Now.ToString("hh:mm:ss tt")
string AM_PM = string.Format("{0:hh:mm:ss tt}", DateTime.Now).Split(new char[]{' '})[1];
언급URL : https://stackoverflow.com/questions/7875259/how-do-i-get-the-am-pm-value-from-a-datetime
'programing' 카테고리의 다른 글
두 개의 개체 배열 병합 (0) | 2023.05.24 |
---|---|
도커 엔진과 도커 컨테이너가 작동하는지 확인하는 방법은 무엇입니까? (0) | 2023.05.24 |
UI 보기에 터치 이벤트를 추가하는 방법은 무엇입니까? (0) | 2023.05.19 |
이클립스에서 코드를 자동으로 포맷하는 방법은? (0) | 2023.05.19 |
"아니..."아무것도 아니야" 대 "...아무 것도 아닙니다. (0) | 2023.05.19 |