The viewer's "x years ago" info sucks ;-)

Per Funke per.funke at gmail.com
Wed Apr 12 05:22:07 BST 2023


"1.83 y/m/d ago" is unconventional but attractive
IMHO,
Per Funke

On Wed, Apr 12, 2023 at 12:43 AM Johannes Zarl-Zierl <johannes at zarl-zierl.at>
wrote:

> Hi Tobias,
>
> > - For easter 2022 (2022-04-17), I get "11 months ago"
> > - For easter 2021 (2021-04-04), I get "2 years ago"
> > - For easter 2020 (2020-04-12), I get "2 years ago"
> > - For easter 2019 (2019-04-21), I get "3 years ago"
> >
> > You see the problem?
>
> Just as you guessed, this stems from the initial design of that code as a
> means to display the age of a person. With birthdays, it totally makes
> sense
> to say "1 year old" when the person is 1 day from their second birthday.
>
> > The longer the date is in the past, the more it's not about the date
> being
> > exactly one day after the date in question or not. Easter 2019 IS four
> years
> > ago, even if the photos have been taken on April 21, and now we only have
> > April 9.
> >
> > [...]
> >
> > For durations that are less than e.g. 2 years ago, we should add exacter
> > descriptions, like "1 year and 10 months ago". But as the distance
> grows, we
> > need to be more fuzzy. Like "Ca. 2 years ago", even if we are like one
> > month off. We could also add some classification like "x 1/4", "x 1/2"
> and
> > "x 3/4", with proper ranges. And with added attributes like "Ca." and
> > "Almost". Of course, we also need the "Exact" case, for some fixed date
> > (like Christmas or such).
>
> I have a hard time coming up with a scheme that expresses the colloquial
> description that one might use. What I can say, though, is that I really
> don't
> like adding special cases for any specific dates like Christmas.
>
> A quick and easy way would be to just use floating point numbers and say
> things
> like "1.83 years ago". This would avoid loss of information while still
> being
> somewhat intuitive to grasp, and it would work the same for 1 year as for
> 100
> years.
>
> I would implement this as follows:
> less than 1 month: X days ago
> less than 1 year: X months ago
> at least 1 year: X years ago
> , where X has two decimal places.
>
> > However, I think that the current state of how we do it is quite messy.
> > Looking into Utilities/DescriptionUtil.cpp, multiple class definitions
> and
> > implementations are mixed inside one cpp file, the code is really hard to
> > read (at least for me), and I think the classes used don't really fit for
> > what I would do.
>
> If one moves the relevant info from dateDifference into the AgeSpec class,
> we
> have all the necessary info there to implement this.
>
> > I'm thinking of adding one more versatile "time interval" class that
> either
> > can return an exact difference, or a fuzzy one, depending for what we
> want
> > to use it. And there's as it seems only two cases: The age of some person
> > in years, or a period of time that has passed since a photo has been
> taken.
>
> That is basically what the AgeSpec class does. The only problem with the
> class
> in its current state is that it lacks the exact time interval because the
> information was discarded by the dateDifference() function. But that can
> be
> remedied...
>
> Cheers,
>   Johannes
>
>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.kde.org/pipermail/kphotoalbum/attachments/20230412/5276d05c/attachment.htm>


More information about the KPhotoAlbum mailing list