【问题标题】:How to convert datetime to day name and month name in erlang?如何将日期时间转换为erlang中的日期名称和月份名称?
【发布时间】:2018-12-21 22:37:28
【问题描述】:

如何在 Erlang 中获得关注 DateTimeFri Jul 13 19:12:59 IST 2018

【问题讨论】:

    标签: date datetime time erlang erlang-otp


    【解决方案1】:

    TL;博士

    使用特殊的qdate 进行所有日期/时间格式化、转换和时区处理。请特别查看Demonstration 部分以了解要点,并根据您的需要进行调整。


    在我看来,Erlang 的日期处理很复杂,并且缺少正确处理日期所需的主要功能。它正在变得更好,但并不完全在那里。此外,时区处理充其量是原始的。

    qdate 的函数将采用(几乎)任何日期格式并转换为任何日期格式,同时使用隐式时区(基于每个进程设置时区)或通过设置特定时区。

    无论如何,如果你去定制,你最终会得到类似这样的东西:

    1> {{Year, Month, Day}, {Hour, Minute, Second}} = calendar:now_to_datetime(erlang:now()).
    {{2018,7,13},{14,39,45}}
    2> lists:flatten(io_lib:format("~4..0w-~2..0w-~2..0wT~2..0w:~2..0w:~2..0w",[Year,Month,Day,Hour,Minute,Second])).
    "2018-07-13T14:39:45"
    

    ...不好;)

    这是我的两分钱。干杯!

    【讨论】:

      【解决方案2】:

      我找到了解决办法。

      A = calendar:universal_time().
      qdate:to_string(<<"D M j G:i:s T Y">> , <<"IST">>,  A).
      

      您可以使用http://uk3.php.net/manual/en/function.date.php 进行不同的格式设置。建议仅在必须支持旧系统时使用,因为此函数调用使用似乎很昂贵。

      【讨论】:

        【解决方案3】:
        date_time() ->
                {{Year, Month, Day},{ Hour, Minute, Second}} = calendar:local_time(),
                  DayOfWeek = calendar:day_of_the_week({Year, Month, Day}),
                  DayName = day_check(DayOfWeek),
                  MonthName = month_check(Month),
                  lists:flatten(io_lib:format("~3..0s ~3..0s ~2..0w ~2..0w:~2..0w:~2..0w IST ~4..0w", [DayName, MonthName, Day, Hour, Minute, Second, Year])).
        
        day_check(1) -> 'Mon';
        day_check(2) -> 'Tue';
        day_check(3) -> 'Wed';
        day_check(4) -> 'Thu';
        day_check(5) -> 'Fri';
        day_check(6) -> 'Sat';
        day_check(7) -> 'Sun'.
        
        month_check(1)  -> 'Jan';
        month_check(2)  -> 'Feb';
        month_check(3)  -> 'Mar';
        month_check(4)  -> 'Apr';
        month_check(5)  -> 'May';
        month_check(6)  -> 'Jun';
        month_check(7)  -> 'Jul';
        month_check(8)  -> 'Aug';
        month_check(9)  -> 'Sep';
        month_check(10) -> 'Oct';
        month_check(11) -> 'Nov';
        month_check(12) -> 'Dec'.
        

        【讨论】:

        • 您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-01-01
        • 2018-12-16
        • 1970-01-01
        • 2017-02-07
        • 1970-01-01
        • 2021-08-21
        • 1970-01-01
        相关资源
        最近更新 更多