如何在 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 对象的字符串表示形式并删除毫秒和时区。