FileMaker CurrentTime转换为24小时格式

时间:2013-10-13 21:19:26

标签: time filemaker

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

Get (CurrentTime)

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

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

1 个答案:

答案 0 :(得分:3)

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

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

导出数据时,您可以勾选“将当前布局的数据格式应用于导出的数据”复选框,以便在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