如何在 Apex 中将 String 12 Hour AM/PM 格式转换为 String 24 Hour HH:mm:ss 格式?
How to convert String 12 Hour AM/PM to String 24 Hour HH:mm:ss format in Apex?
我有字符串格式:'4:33:34 PM',我需要在 Apex 中将其转换为'16:33:34'字符串格式
这是一种解决方法:
String TimeString = '4:33:34 PM';
String Regex = '(\d{1,2}):(\d{1,2}):(\d{1,2}) ([PA]M)';
Pattern p = Pattern.compile( Regex );
Matcher m = p.matcher( TimeString );
if ( m.matches() ){
Integer Hours = Integer.valueOf( m.group(1) )
, Minutes = Integer.valueOf( m.group(2) )
, Seconds = Integer.valueOf( m.group(3) )
, PmShift = m.group(4) == 'PM' ? 12 : 0
;
Time t = Time.newInstance( Hours + PmShift , Minutes , Seconds , 0 );
System.debug( (''+t).substring(0,(''+t).indexOf('.')) );
}
基本上,这会将数字和 AM/PM 字符串分成小时、分钟和秒,并使用它们构建一个 Time
对象。然后它采用该 Time 对象的字符串表示形式并删除毫秒和时区。
我有字符串格式:'4:33:34 PM',我需要在 Apex 中将其转换为'16:33:34'字符串格式
这是一种解决方法:
String TimeString = '4:33:34 PM';
String Regex = '(\d{1,2}):(\d{1,2}):(\d{1,2}) ([PA]M)';
Pattern p = Pattern.compile( Regex );
Matcher m = p.matcher( TimeString );
if ( m.matches() ){
Integer Hours = Integer.valueOf( m.group(1) )
, Minutes = Integer.valueOf( m.group(2) )
, Seconds = Integer.valueOf( m.group(3) )
, PmShift = m.group(4) == 'PM' ? 12 : 0
;
Time t = Time.newInstance( Hours + PmShift , Minutes , Seconds , 0 );
System.debug( (''+t).substring(0,(''+t).indexOf('.')) );
}
基本上,这会将数字和 AM/PM 字符串分成小时、分钟和秒,并使用它们构建一个 Time
对象。然后它采用该 Time 对象的字符串表示形式并删除毫秒和时区。