1

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

Get (CurrentTime)

我得到 12 小时的时间,最后加上“PM”或“AM”。是否有返回 24 小时时间的内置功能?

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

4

1 回答 1

3

Filemaker 的内部时间存储符号只是从当天午夜开始经过的秒数。

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

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

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

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


/*---------------------------------------------------------------
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
于 2013-10-13T23:02:59.067 回答