FileMaker CurrentTime转换为24小时格式

FileMaker CurrentTime转换为24小时格式,time,filemaker,Time,Filemaker,在FileMaker Pro中,我试图将当前日期和时间附加到导出数据的文件名。如果我使用 Get (CurrentTime) 我有12小时的时间,最后加上“下午”或“上午”。是否有内置的功能来返回24小时的时间 表示格式遵循系统时间的格式,但事实并非如此。系统时间显示为17:22,但CurrentTime返回52218 PM。(Mac OS 10.8.5,FileMaker Pro 12.0v4。)FileMaker的内部时间存储表示法只是从当天午夜起经过的秒数 即自午夜起56659秒=下午3

在FileMaker Pro中,我试图将当前日期和时间附加到导出数据的文件名。如果我使用

Get (CurrentTime)
我有12小时的时间,最后加上“下午”或“上午”。是否有内置的功能来返回24小时的时间


表示格式遵循系统时间的格式,但事实并非如此。系统时间显示为17:22,但
CurrentTime
返回52218 PM。(Mac OS 10.8.5,FileMaker Pro 12.0v4。)

FileMaker的内部时间存储表示法只是从当天午夜起经过的秒数

即自午夜起56659秒=下午3:44:19

导出数据时,您可以勾选“将当前版面的数据格式应用于导出的数据”复选框,以便将FMP版面中显示为24小时的时间导出为24小时

但是,对于其他内部使用,例如您正在询问的文件命名案例,您需要使用自定义函数将Get(currentTime)的输出转换为24小时格式

例如,请参阅Briandunning.com上的函数。 (下面粘贴了自定义函数的完整代码,以防止将来出现死链接,但如果上面的链接仍然有效,请使用该版本,因为它可能更为最新:)


/*---------------------------------------------------------------
函数名称:TimeFormatAs
语法:TimeFormatAs(时间;键入12或24)
作者——乔纳森·米克尔森,思想发展公司。
(www.think-dev.com)
---------------------------------------------------------------*/
案例(非空(时间);
让(
[ 
//固定变量
padHoursChar=“”;//在文本结果中填充小时的字符,(例如“0”、“0”、“0”)
padAMPMChar=“”;//用于在文本结果中填充AM/PM的字符,(例如“0”、“0”、“1”)
supfixam=“AM”;//0;:“&calc12秒)&
padAMPMChar和calc12Suffix
] ; 
案例(type12or24>=“24”;result24;result12)//结束案例
)//端盖
)//结束情况

另请参见:非常感谢。我看过这个剧本,但决定找一些更直接的。最后,我只是使用可用的时间格式进行导出,并使用外部脚本进行转换。这样比较省事。
/*---------------------------------------------------------------
Function Name: TimeFormatAs

Syntax: TimeFormatAs ( theTime; type12or24 )

Author - Jonathan Mickelson, Thought Development Corp.
(www.thought-dev.com)
---------------------------------------------------------------*/
Case ( not IsEmpty ( theTime ) ; 
Let ( 
 [ 
// FIXED VARIABLES
padHoursChar           = "" ;        //   Character to pad the Hours with in a text result, (Ex."0", " ", "")
padAMPMChar         = " " ;      //   Character to pad the AM/PM with in a text result, (Ex."0", " ", "")
suffixAM                  = "AM" ;  //    <------------ CHANGE AM Suffix Here
suffixPM                  = "PM" ;   //    <------------ CHANGE PM Suffix Here

// DYN. VARIABLES
theTime = GetAsTime ( theTime ) ;  
hasSeconds = PatternCount ( GetAsText ( theTime ) ; ":" ) = 2 ; 
secs = Mod ( Seconds ( theTime ) ; 60 ) ; 
mins = Mod ( Minute ( theTime ) ; 60 ) + Div ( Seconds ( theTime ) ; 60 ) ; 
hours = Hour ( theTime ) + Div ( Minute ( theTime ) ; 60 ) ; 


// -------------- BEGIN 24 HOUR TIME CALC ----------------------

result24 = GetAsTime ( theTime ) + 1 - 1 ; 

// -------------- BEGIN 12 HOUR TIME CALC ----------------------

hours = Mod ( Hour ( theTime ) ; 12 ) ; 

tempHours =  Case ( ( hours < 1 ) or ( hours - 12 = 0 ) ; 12 ; hours ) ; 
calc12Hours = 
                     Left ( 
                              padHoursChar & padHoursChar ; 
                              2 - Length ( tempHours ) 
                             ) & 
                             tempHours ; 
calc12Minutes = Left ( "00" ; 2 - Length ( mins ) ) & mins ; 
calc12Seconds = Left ( "00" ; 2 - Length ( secs ) ) & secs ;
calc12Suffix    = Case ( Mod ( Hour ( theTime ) ; 24 ) >= 12 ; suffixPM ; suffixAM ) ; 
result12          = calc12Hours & 
                          ":" & calc12Minutes & 
                          // if original time included a non-zero seconds value, display seconds
                          Case ( hasSeconds and secs > 0 ; ":" & calc12Seconds ) &  
                          padAMPMChar & calc12Suffix 
] ; 

Case ( type12or24 >= "24" ; result24 ; result12 ) // END CASE

) // END LET
) // END CASE