Christian Hansen

  • About: I blog about Perl.
  • Posted Simple and efficient formatting of relative date/time using Time::Moment to Christian Hansen
    use warnings;
    use Carp              qw[];
    use Time::Moment 0.19 qw[];
    sub YEAR   () { 365.2425    }
    sub MONTH  () { YEAR / 12   }
    sub DAY    () { 1           }
    sub HOUR   () { DAY / 24    }
    sub MINUTE () { HOUR / 60   }
    sub SECOND () { MINU…
  • Commented on Time::Moment vs DateTime
    And the benchmark:...
  • Commented on Time::Moment vs DateTime
    Time::Moment only use gettimeofday(2) and localtime(3) to compute the difference. I did consider to add Panda::Date until I reviewed the source code. Your code isn't thread safe and you require 5.18 to compile it, and your naïve implementation of a...
  • Posted Let's talk about Time::Moment and round-trip of strings to Christian Hansen

    In my previous blog post I wrote a lot more about Time::Moment, than appeared in the post (could have been my mistake due to a preview and error and a…

  • Commented on Time::Moment vs DateTime
    I'm not sure what you are asking, if you think I didn't try to improve the performance of, you think wrong (look at the changelog or ask Dave Rolsky). Time::Moment can never be "backwards" comparability with due to...
  • Commented on A bit more about Time::Moment
    While it would be technically possible, it would make the API confusing and fragile IMHO. I intend to add a Duration object (Time::Moment::Duration). $duration = $tm1->minus($tm2); $tm2 = $tm1->plus($duration); $tm2 = $tm1->minus($duration); $duration = $tm1 - $tm2; $tm2 = $tm1...
  • Commented on A bit more about Time::Moment
    LOL, somewhere this blogpost got choped =(...
  • Posted A bit more about Time::Moment to Christian Hansen

    In my previous blog post I mentioned the bottlenecks of DateTime and why I had to develop Time::Moment and it's underlying c library,

  • Commented on Time::Moment vs DateTime
    I'm glad you like c-dt, Time::Moment only uses a fraction of the API povided by c-dt. As you might have seen c-dt provides calculation of easter (western/orthodox), efficient business day calculations and weekday calculations and a bit more. c-dt is...
  • Commented on Time::Moment vs DateTime
    Thanks, I'll consider adding Class::Date and Panda::Date to the benchmark....
  • Commented on Time::Moment vs DateTime
    Time::Moment represents an unambiguous point in time, but it's not fully time zone aware. If you have a local time (a point in time with an offset) you may need to use a time zone if you intend to perform...
  • Posted Time::Moment vs DateTime to Christian Hansen

    In December last year released the first version of Time::Moment. I don't foresee any major changes in Time::Moment 0.16 API, so in next release I'll remove the "early preview release" notice in the description. I have been using 0.16 in…

  • Commented on YAPC::Asia Tokyo 2013: Fighting Legacy Code
    If my URL::Encode::XS makes a difference you should try Unicode::UTF8 (also my module), it makes a huge difference in my deployments. -- chansen...
  • Commented on Coping with double encoded UTF-8
    $UTF8_double_encoded is defined in the first code snippet. The usage of &utf8::is_utf8 is to determine to match Perl's internal representation of wide characters or the octet reprepresentation of UTF-8. -- chansen...
  • Commented on Tut # 7: jQuery, Ajax, xml, Perl, databases and utf8
    1) There is no need for using the utf8 pragma unless your literal strings contains UTF-X. 2) Using's utf8 decoder is a bad idea for external/untrusted data since it's a superset of UTF-8 and therefore accepts ill-formed UTF-8 (as...
  • Commented on Date arithmetic can be dangerous
    Just because you doesn't know how date arithmetic is done, doesn't meen it's dangerous! Assuming that a day consist of 60*60*24 seconds is ignorant!...
  • Commented on Perl regex escapes by version
    Very useful! Thanks to you and Tom! -- chansen...
  • Commented on CPAN modules for generating passwords
    Thanks for sharing, very useful post =)...
  • Posted What if sv_utf8_upgrade() used heuristic encoding? to Christian Hansen

    Heuristic: decode as native unless is well-formed UTF-X:

    sub heuristic_utf8_upgrade {
          unless utf8::decode($_[0]);
        return !!0;

    Here is some code to play with:

  • Posted Coping with double encoded UTF-8 to Christian Hansen

    A few months ago a client asked if could help them with a "double encoded UTF-8 data problem", they had managed to store several GB of data with "corrupted" UTF-8 (technically it's not corrupt UTF-8 since its well-formed UTF-8). During the process I developed several regexs that I would like to…

  • Commented on XS bits: Which class is this object blessed into? has anchors for perlapi.pod. sv_derived_from -- chansen...
Subscribe to feed Recent Actions from Christian Hansen

  • Duncan commented on Time::Moment vs DateTime

    Perl badly needs a standard or at least a "de facto" standard for date time handling. DateTime has seemed to be emerging as that standard for some years. Unfortunately this is the third or so article in the last twelve months criticising it and promoting something else.

    Wouldn't it have been great to read that two clever programmers had collaborated and that DateTime version ??? was backward compatable and really flew.

    Then the benefits would have gradually crept into our codebase without me getting into another argument about standard modules.

    The stats quoted for Ti…

  • Duncan commented on Time::Moment vs DateTime

    "without me getting into another argument about standard modules"

    Slightly worried about what I've written there. I'm writing about an argument at $work, not with anyone on this list.

  • gvl commented on A bit more about Time::Moment

    Why no overloading operators other than stringification and comparison? It would be easier to just add two scalars containing a references to a Time::Moment class than use plus_hours or one of those other methods.

  • commented on Time::Moment vs DateTime

    Panda::Date is the fastest available framework. It doesn't use OS's time functions, instead it implements its own which are much faster. And with all these speeds, it is full-featured like datetime

  • commented on Time::Moment vs DateTime

    moreover it has C++ interface with speeds of dozens millions/s. which you can use from your xs modules diretcly without slow perl layers.

Subscribe to feed Responses to Comments from Christian Hansen

About is a common blogging platform for the Perl community. Written in Perl and offering the modern features you’ve come to expect in blog platforms, the site is hosted by Dave Cross and Aaron Crane, with a design donated by Six Apart, Ltd.