使用时区在纯C中格式化日期

时间:2016-05-02 07:05:30

标签: c unix-timestamp date-formatting

我想将Unix毫秒转换器实现为人类可读的日期格式。 使用这篇文章https://stackoverflow.com/a/1657307/1979882我发现我可以收到这样的字符串,但我无法在代码中设置时区。该代码仅使用系统时区。

#include <stdio.h>
#include <time.h>

int main ( int argc, char *argv[] )
{
    time_t now;
    struct tm *lcltime;

    now = time ( NULL );
    lcltime = localtime ( &now );

    printf ( "The time is %d:%d\n", lcltime->tm_hour, lcltime->tm_min );

    return 0;
}

可以自定义吗?

修改

我需要一些类似Java的方法:

SimpleDateFormat df= new SimpleDateFormat("dd MMM hh:mm z",Locale.ENGLISH);
df.setTimeZone("Europe/London");
System.out.println("London Time " + df.format(System.currentTime()));
df.setTimeZone("Asia/Benjin");
System.out.println("Benjin Time " + df.format(System.currentTime()));

EDIT_2

我发现我可以使用setenv设置时区(...) 网址 https://stackoverflow.com/a/1620451/1979882

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int main (int argc, char *argv[])
{
    struct tm *mt;
    time_t mtt;
    char ftime[10];

    setenv("TZ", "PST8PDT", 1);
    tzset();
    mtt = time(NULL);
    mt = localtime(&mtt);
    strftime(ftime,sizeof(ftime),"%Z %H%M",mt);

    printf("%s\n", ftime);
}

但是改变了系统时区。我只需要在我的代码中进行时区修改。

1 个答案:

答案 0 :(得分:1)

您可以根据所需的时区差异将参数更改为PERSON

create table person (
    -- various columns
    civilite_id int,
    foreign key component civilite_id references civilite(id_civilite)
);

要完全移植,您可以参考this post

获取当前时区