[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [O] [bug] Remote durations are considered as fractions
From: |
Sebastien Vauban |
Subject: |
Re: [O] [bug] Remote durations are considered as fractions |
Date: |
Mon, 04 Jun 2012 17:02:19 +0200 |
User-agent: |
Gnus/5.130006 (Ma Gnus v0.6) Emacs/24.0.97 (windows-nt) |
Hi,
May I bump up this thread (and its inlined, older, corollary)?
Best regards,
Seb
"Sebastien Vauban" wrote:
> "Sebastien Vauban" wrote:
>> Bastien wrote:
>>> "Sebastien Vauban" writes:
>>>
>>>> I think this is it...
>>>
>>> Yes.. but in fact, this is precisely the difference between the `t' and the
>>> `T' flags - the latter displays seconds while the former display the output
>>> according to `org-table-duration-custom-format', which you can customize.
>>> Sorry I didn't mention this before.
>>
>> I have the impression you mixed, in the above, seconds with *fraction of*
>> seconds:
>>
>> - the flag `T' currently means HH:MM:SS, while
>> - the flag `t' currently means "fractional time" of hours (by default).
>>
>> As you say, `t' may be further customized:
>>
>> ┏━━━━
>> ┃ org-table-duration-custom-format is a variable defined in
>> `org-table.el'.
>> ┃ Its value is hours
>> ┃
>> ┃ Documentation:
>> ┃ Format for the output of calc computations like $1+$2;t.
>> ┃ The default value is 'hours, and will output the results as a
>> ┃ number of hours. Other allowed values are 'seconds, 'minutes and
>> ┃ 'days, and the output will be a fraction of seconds, minutes or
>> ┃ days.
>> ┗━━━━
>>
>> Hence, you really have 5 cases:
>>
>> - t, fraction of days
>> - t, fraction of hours
>> - t, fraction of minutes
>> - t, fraction of seconds
>> - T, HH:MM:SS
>>
>> Those 5 cases are currently handled (in that order) in the following
>> function:
>>
>> (defun org-table-time-seconds-to-string (secs &optional output-format)
>> "Convert a number of seconds to a time string.
>> If OUTPUT-FORMAT is non-nil, return a number of days, hours,
>> minutes or seconds."
>> (let* ((secs0 (abs secs))
>> (res
>> (cond ((eq output-format 'days)
>> (format "%.3f" (/ (float secs0) 86400)))
>> ((eq output-format 'hours)
>> (format "%.2f" (/ (float secs0) 3600)))
>> ((eq output-format 'minutes)
>> (format "%.1f" (/ (float secs0) 60)))
>> ((eq output-format 'seconds)
>> (format "%d" secs0))
>> (t (org-format-seconds "%.2h:%.2m:%.2s" secs0)))))
>> (if (< secs 0) (concat "-" res) res)))
>>
>> My patch just addressed the HH:MM:SS format (that is, the `T' flag).
>> It does not impact the fractional representation of time (the `t' flag).
>
> I just had to look at some table using time references :
>
> | 08:30 | 09:00 |
> | 09:30 | |
>
> As the end time on the first line is equal to the beginning time on the second
> one, I try using a formula to copy the time:
>
> | 08:30 | 09:00 |
> | #ERROR | |
> #+TBLFM: @address@hidden
>
> The above does not work because Calc makes a division of 9 by 0, as -- by
> default, without an explicit format -- data is considered as numeric, right?
>
> Hence, I need to use the T flag, but this doesn't look right yet:
>
> | 08:30 | 09:00 |
> | 09:00:00 | |
> #+TBLFM: @address@hidden;T
>
> This is what the above patch is supposed to solve.
>
> BTW, I tried other variants:
>
> 1. replacing `:' by `h'
>
> | 08h30 | 09h00 |
> | 9 h00 | |
> #+TBLFM: @address@hidden
>
> Weird that the 9 is moved away from the `h'. I can accept that the leading
> 0 is removed, though.
>
> 2. ... and using a string format:
>
> | 8h30 | 9h00 |
> | 9 | |
> #+TBLFM: @address@hidden;%s
>
> Another weird results for me...
>
> Isn't there any way to say "copy verbatim the contents" of that field?
--
Sebastien Vauban
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- Re: [O] [bug] Remote durations are considered as fractions,
Sebastien Vauban <=