在FileMaker Pro中,我尝试将当前日期和时间附加到我导出数据的文件名。如果我使用
Get (CurrentTime)
我得到12小时的时间,最后是“PM”或“AM”。是否有内置功能可以返回24小时?相反?
FileMaker help表示格式遵循系统时间的格式,但事实并非如此。系统时间显示为17:22,但CurrentTime
返回52218 PM。 (Mac OS 10.8.5,FileMaker Pro 12.0v4。)
答案 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