如何在Apex中将String 12 Hour AM / PM转换为String 24 Hour HH:mm:ss格式?

时间:2018-08-06 19:18:45

标签: time format salesforce apex

我的字符串格式为:'4:33:34 PM',我需要在Apex中将其转换为'16:33:34'字符串格式

1 个答案:

答案 0 :(得分:0)

这是解决问题的一种方法:

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