当前位置:  技术问答>linux和unix

Linux下怎么编程设置时间?

    来源: 互联网  发布时间:2015-09-04

    本文导语:  例如: 给定 second, minute, hour,  day, month, year,  1)如果设置系统时间,怎样确定给定的值是符合要求的,譬如  给定的值年份为 闰年, 那么二月份最多只能设到 29 号, 怎么通过函数取得呢? 又2)如何得到现...

例如:
给定 second, minute, hour,  day, month, year, 
1)如果设置系统时间,怎样确定给定的值是符合要求的,譬如 
给定的值年份为 闰年, 那么二月份最多只能设到 29 号, 怎么通过函数取得呢?

又2)如何得到现在的second, minute, hour,  day, month, year值?

有人提示我用gettimeofday / settimeofday
不过我还是不很清楚
有谁能指点一下?
最好有代码参考谢谢。

|
使用 strftime(...)格式化gmtime返回值.
size_t strftime(char *s, size_t maxsize, const char *format, const struct tm *timptr); 

最好不要自己去转换 struct tm结构。以前自己转换的,改了机器设置以后,有时候就有莫名其妙的问题。   
如下:
   char szLastBuf[MAX_BUF]={0};
   time_t t;
   struct tm *ptm;
   char szTime[26]={0};
   char *p=szTime;
   time(&t);
   ptm=gmtime(&t);
   if(strftime(szLastBuf, MAX_BUF, "20%y//%m//%d", ptm)==-1)
          return -1;
   printf("当前日期(年/月/日): %sn",szLastBuf);
   ....

////////////////////////////////////////////////////

man strftime 可以得到以下关于 strftime所有说明:


NAME
strftime - convert date and time to a string 

SYNOPSIS
#include 

size_t strftime(char *s, size_t maxsize, const char *format, const struct tm *timptr); 

DESCRIPTION
The strftime() function places bytes into the array pointed to by s as controlled by the string pointed to by format. The format string consists of zero or more conversion specifications and ordinary characters. A conversion specification consists of a % character and a terminating conversion character that determines the conversion specification's behaviour. All ordinary characters (including the terminating null byte) are copied unchanged into the array. If copying takes place between objects that overlap, the behaviour is undefined. No more than maxsize bytes are placed into the array. Each conversion specification is replaced by appropriate characters as described in the following list. The appropriate characters are determined by the program's locale and by the values contained in the structure pointed to by timptr. 

Local timezone information is used as though strftime() called tzset(). 

%a 
is replaced by the locale's abbreviated weekday name. 
%A 
is replaced by the locale's full weekday name. 
%b 
is replaced by the locale's abbreviated month name. 
%B 
is replaced by the locale's full month name. 
%c 
is replaced by the locale's appropriate date and time representation. 
%C 
is replaced by the century number (the year divided by 100 and truncated to an integer) as a decimal number [00-99]. 
%d 
is replaced by the day of the month as a decimal number [01,31]. 
%D 
same as %m/%d/%y. 
%e 
is replaced by the day of the month as a decimal number [1,31]; a single digit is preceded by a space. 
%h 
same as %b. 
%H 
is replaced by the hour (24-hour clock) as a decimal number [00,23]. 
%I 
is replaced by the hour (12-hour clock) as a decimal number [01,12]. 
%j 
is replaced by the day of the year as a decimal number [001,366]. 
%m 
is replaced by the month as a decimal number [01,12]. 
%M 
is replaced by the minute as a decimal number [00,59]. 
%n 
is replaced by a newline character. 
%p 
is replaced by the locale's equivalent of either a.m. or p.m. 
%r 
is replaced by the time in a.m. and p.m. notation; in the POSIX locale this is equivalent to %I:%M:%S %p. 
%R 
is replaced by the time in 24 hour notation (%H:%M). 
%S 
is replaced by the second as a decimal number [00,61]. 
%t 
is replaced by a tab character. 
%T 
is replaced by the time (%H:%M:%S). 
%u 
is replaced by the weekday as a decimal number [1,7], with 1 representing Monday. 
%U 
is replaced by the week number of the year (Sunday as the first day of the week) as a decimal number [00,53]. 
%V 
is replaced by the week number of the year (Monday as the first day of the week) as a decimal number [01,53]. If the week containing 1 January has four or more days in the new year, then it is considered week 1. Otherwise, it is the last week of the previous year, and the next week is week 1. 
%w 
is replaced by the weekday as a decimal number [0,6], with 0 representing Sunday. 
%W 
is replaced by the week number of the year (Monday as the first day of the week) as a decimal number [00,53]. All days in a new year preceding the first Monday are considered to be in week 0. 
%x 
is replaced by the locale's appropriate date representation. 
%X 
is replaced by the locale's appropriate time representation. 
%y 
is replaced by the year without century as a decimal number [00,99]. 
%Y 
is replaced by the year with century as a decimal number. 
%Z 
is replaced by the timezone name or abbreviation, or by no bytes if no timezone information exists. 
%% 
is replaced by %. 
If a conversion specification does not correspond to any of the above, the behaviour is undefined. 

Modified Conversion Specifiers
Some conversion specifiers can be modified by the E or O modifier characters to indicate that an alternative format or specification should be used rather than the one normally used by the unmodified conversion specifier. If the alternative format or specification does not exist for the current locale, (see ERA in the specification, Section 5.3.5) the behaviour will be as if the unmodified conversion specification were used. 

%Ec 
is replaced by the locale's alternative appropriate date and time representation. 
%EC 
is replaced by the name of the base year (period) in the locale's alternative representation. 
%Ex 
is replaced by the locale's alternative date representation. 
%EX 
is replaced by the locale' alternative time representation. 
%Ey 
is replaced by the offset from %EC (year only) in the locale's alternative representation. 
%EY 
is replaced by the full alternative year representation. 
%Od 
is replaced by the day of the month, using the locale's alternative numeric symbols, filled as needed with leading zeros if there is any alternative symbol for zero, otherwise with leading spaces. 
%Oe 
is replaced by the day of month, using the locale's alternative numeric symbols, filled as needed with leading spaces. 
%OH 
is replaced by the hour (24-hour clock) using the locale's alternative numeric symbols. 
%OI 
is replaced by the hour (12-hour clock) using the locale's alternative numeric symbols. 
%Om 
is replaced by the month using the locale's alternative numeric symbols. 
%OM 
is replaced by the minutes using the locale's alternative numeric symbols. 
%OS 
is replaced by the seconds using the locale's alternative numeric symbols. 
%Ou 
is replaced by the weekday as a number in the locale's alternative representation (Monday=1). 
%OU 
is replaced by the week number of the year (Sunday as the first day of the week, rules corresponding to %U) using the locale's alternative numeric symbols. 
%OV 
is replaced by the week number of the year (Monday as the first day of the week, rules corresponding to %V) using the locale's alternative numeric symbols. 
%Ow 
is replaced by the number of the weekday (Sunday=0) using the locale's alternative numeric symbols. 
%OW 
is replaced by the week number of the year (Monday as the first day of the week) using the locale's alternative numeric symbols. 
%Oy 
is replaced by the year (offset from %C) using the locale's alternative numeric symbols. 
RETURN VALUE
If the total number of resulting bytes including the terminating null byte is not more than maxsize, strftime() returns the number of bytes placed into the array pointed to by s, not including the terminating null byte. Otherwise, 0 is returned and the contents of the array are indeterminate. 

ERRORS
No errors are defined. 

EXAMPLES
None. 

APPLICATION USAGE
The range of values for %S is [00,61] rather than [00,59] to allow for the occasional leap second and even more infrequent double leap second. 

Some of the conversion specifications marked EX are duplicates of others. They are included for compatibility with nl_cxtime() and nl_ascxtime(), which were published in Issue 2. 

Applications should use %Y (4-digit years) in preference to %y (2-digit years). 

FUTURE DIRECTIONS
None. 

SEE ALSO

|
这个程序是获得当前系统时间的:请参考

#include 
#include 

int main(void)
{
        time_t  t;
        struct tm *tm;

        t = time(NULL);
        tm = localtime(&t);

        printf("%04d-%02d-%02d %02d:%02dn", tm->tm_year + 1900, tm->tm_mon+1,
tm->tm_mday, tm->tm_hour, tm->tm_min);

        return 0;
}

    
 
 

您可能感兴趣的文章:

  • Linux c socket编程:简单的客户端(client)和服务端(server)实现
  • 都说《UNIX环境高级编程》好,对于学linux编程好不好?《Linux下的c编程》《嵌入式系统C编程》那个更适合初学者?各是那个出版社的?(
  • Linux下c/c++ boost安装及并发编程库mpi介绍
  • 我想学Linux编程,请大家推荐几本学习Linux下C/C++编程的书
  • 学Linux编程前要学Unix吗?哪里有学Linux编程的好书下载?
  • Linux下使用openssl api编程socket编程,为什么要编译啊? iis7站长之家
  • unix编程与linux编程有什么区别?
  • linux下编程跟平时的编程有什么区别吗?
  • Linux下的编程指的就是Shell编程吗?
  • 帮我介绍基本linux下编程的书,《Linux上的C编程》这本书怎么样?还有别的书吗?
  • Linux下使用openssl api编程socket编程,为什么要编译啊?
  • 请教linux下的编程的选择:我听说有gtk+gnome的编程,也有kde里的 什么编程,到底应该选择哪个呢?好象一个是技术好一点,一个是市场占有
  • 请问LINUX编程(内核编程)是在什么环境下用什么IDE编?
  • Linux C编程一站式学习,高级shell Bash脚本编程指南,
  • 《UNIX网络编程》这本书适合linux下的网络编程吗?
  • 我学&用Linux编程,手里有《UNIX环境高级编程》,看它行吗?
  • Linux下编程有哪本比较好的书可以推荐下呢。本人看过鸟哥的私房菜了,linux基本操作了解了,现在想开始学linux 下的编程 。我以后打算往网络这方面去学习
  • 都说《UNIX环境高级编程》好,对于学linux编程好不好?是那个出版社的,是中文版吗?
  • windows下编程中有没有linux编程中管道和信号的概念?
  • 哪位编程高手知道如何编程实现获取进程的内存使用量信息(linux)
  • 初学者问题,哪里有适合入门的编程电子书看 linux 下 c编程
  • TCP协议四次断连过程介绍及Linux内核协议栈中相关设置项
  • 怎么设置在Linux上面设置WEB服务器?请各位高手指教!!!
  • Linux/CentOS/fedora下vim显示的字符编码设置
  • 在linux服务器上面设置squid后怎么设置可以使客户端能使用QQ?
  • Linux下用ntpdate同步时间及date显示设置时间
  • linux下到底如何设置环境变量?在哪设置?详细具体点
  • MTU介绍以及在windows和linux下怎么设置MTU值
  • linux中端口号设置是在哪个配置文件,该如何设置?
  • Linux下如何查看,设置环境变量并立即生效
  • 求教:在freebsd下设置服务器是否与在linux下设置方法一样?
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • Linux/CentOS下的CST和UTC时间的区别以及不一致的解决方法
  • linux设置时间和把时间从UTC转成本地时间的
  • Linux下gettimeofday()函数和clock()函数:精确到毫秒级的时间
  • 求助,Linux系统时间总比硬件时间慢!
  • linux c程序运行cpu时间不包括 i/o时间
  • Linux下如何判断系统当前时间和一个表里面已有的时间的大小?
  • Debian linux 开机一段时间后没声音,重启后,一段时间内有声音,然后就没音了.
  • linux有什么命令能把时间戳转换成时间字符串?
  • 如何通过输入时间对linux时间进行设置
  • 请教如何将多台linux的时间,以一台时间为标准达到同步,请高手指教
  • !!请各位大牛帮忙了,在linux下提取系统时间的话,用什么方法能提取到比毫秒更精确的时间呢?
  • 求助,linux中修改了目录dir下的某个文件,相应的dir属性中的时间会与修改目录下文件的时间一致,这是怎么实现的?
  • !!linux下文件名称以时间结尾的,如何在shell脚本中找到时间最新的那个文件?
  • 急问:如何得到linux下c程序运行中的IO等待时间?
  • 嵌入式linux的时间问题
  • 装了linux后,我的win2000和linux的时间老是都不对了
  • Linux 时间设置问题
  • 在linux上如何知道文件的详细信息,如创建和结束时间等?
  • 求教:Linux系统如何保证系统时间运行?
  • linux虚拟机时间与windows时间如何同步
  • 怎样测出linux启动每个模块的时间
  • linux c/c++ IP字符串转换成可比较大小的数字
  • 在win分区上安装linux和独立分区安装linux有什么区别?可以同时安装吗?(两个linux系统)
  • linux哪个版本好?linux操作系统版本详细介绍及选择方案推荐
  • 在虚拟机上安装的linux上,能像真的linux系统一样开发linux程序么?
  • secureCRT下Linux终端汉字乱码解决方法
  • 我重装window后,把linux的引导区覆盖了,进不了linux怎么办?急啊,望热心的人帮助 (现在有linux的盘)
  • Linux c字符串中不可打印字符转换成16进制
  • 安装vmware软件,不用再安装linux系统,就可以模拟linux系统了,然后可以在其上学习一下LINUX下的基本操作 了?
  • Linux常用命令介绍:更改所属用户群组或档案属性
  • 红旗Linux主机可以通过127.0.0.1访问,但如何是连网的Win2000机器通过Linux的IP去访问Linux


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3