使用时区在纯 C 中进行日期格式化
Date formatting in pure C using time zones
我想将 Unix 毫秒转换器实现为人类可读的日期格式。
使用此 post 我发现我可以收到这样的字符串,但我无法在代码中设置时区。该代码仅使用系统时区。
#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(...) 设置时区
url
#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);
}
可在更改系统时区。我只需要在我的代码中修改时区。
您可以根据需要的时差将参数更改为localtime
。
now += (time_t)(3600*TIME_DIFF_IN_HRS)
lcltime = localtime ( &now );
为了完全便携,您可以参考this post
获取当前时区
我想将 Unix 毫秒转换器实现为人类可读的日期格式。 使用此 post 我发现我可以收到这样的字符串,但我无法在代码中设置时区。该代码仅使用系统时区。
#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(...) 设置时区 url
#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);
}
可在更改系统时区。我只需要在我的代码中修改时区。
您可以根据需要的时差将参数更改为localtime
。
now += (time_t)(3600*TIME_DIFF_IN_HRS)
lcltime = localtime ( &now );
为了完全便携,您可以参考this post
获取当前时区