Is there any way to do this?
Can you explain in more detail why you want this?
The data formatting you specify in the inspector applies its settings only on the layout where you specify it. It does not apply any changes directly to the data as you have found. Normally, you want to store a dollar amount as a number, but can always format it on the layout where you display it. The format should not affect any calculaitons which would treat this value as a number whether it has the formatting characters or not.
Likewise, time and timestamp fields store their values in terms of elapsed seconds. Formatting text such as AM, PM, will not affect how it evaluates in a calculation and you can select the time format you want when you display this value on a layout.
That's not to say you can't do this, it just looks like something that requires a fairly complex solution without any real need to do so--but when you explain why you want this, I may change my mind.
I use scripts to generate emails for my employees that have schedules/tasks and other info in them. When the times, dates and dollar amounts are pulled from the database for these emails, they are not formatted properly due to inconsistencies in the data entry.
For time, I'd use a text calculation such as this either in a calculated field, custom function or included in the calculation where you build your email text:
Let ( [ H = Hour ( TimeField ) ;
Mr = If ( H > 12 ; "PM" ; "AM" ) ;
H2 = If ( H > 12 ; H - 12 ; H ) ;
M = Right ( "0" & Minute ( TimeField ) ; 2 )
H2 & ":" & M & " " & Mr )
For formatted currency, I'd use something like:
Let ( [ th = Div ( DollarField ; 1000 ) ;
th2 = If ( th > 0 ; th & "," ) ;
d = Right ( "0" & ( DollarField- Int ( DollarField) ) * 100 ; 2 ) ;
h = Right ( "00" & Mod ( Int ( DollarField) ; 1000 ) ; 3 )
"$" & th2 & h & "." & d )
Note that this expression will not format correctly for values of less than $1.00.