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