First, the Linux common time correlation function
-asctime,ctime,getttimeofday,gmtime,localtime,mktime,settimeofday,time
Asctime: Converting dates to strings
CTime: Converts a number of seconds into a string
Gettimeofday: Gets the time and date based on the given number of seconds subtracted from January 1, 1970
Gmtime: Gets the time and date based on the given number of seconds subtracted from January 1, 1970
LocalTime: Gets the time and date of the local time zone according to the given number of seconds subtracted from January 1, 1970
Mktime: Converting time structure data to elapsed seconds
Settimeofday: Set the system time, only the root user can run
Time: This function returns the number of seconds from 0:0 to 0 seconds from UTC of January 1, 1970 of A.D.
1.asctime (the time and date are represented in string format)
Related functions
Time,ctime,gmtime,localtime
Table header File
#include <time.h>
Defining functions
char * asctime (const struct TM * timeptr);
Function description
Asctime () Converts the information in the TM structure referred to by the parameter timeptr to the time-date representation used by the real world, and then returns the result in string form. This function has been converted from time zone to local time, and the string format is: "Wed June 21:49:08 1993/n"
return value
If the associated time-date function is called again, the string may be corrupted. This function differs from CTime in that the parameters passed in are different structures.
Additional Instructions
Returns a string representing the current local time date.
Example
#include <time.h>
Main ()
{
time_t TIMEP;
Time (&TIMEP);
printf ("%s", Asctime (Gmtime (&TIMEP)));
}
Perform
Sat Oct 28 02:10:06 2000
2.ctime (the time and date are represented in string format)
Related functions
Time,asctime,gmtime,localtime
Table header File
#include <time.h>
Defining functions
Char *ctime (const time_t *TIMEP);
Function description
CTime () Converts the information in the time_t structure referred to by the parameter TIMEP to the time-date representation used by the real world, and then returns the result in string form. This function has been converted from time zone to local time, and the string format is "Wed June 21:49:08 1993/n". If the associated time-date function is called again, the string may be corrupted.
return value
Returns a string representing the current local time date.
Example
#include <time.h>
Main ()
{
time_t TIMEP;
Time (&TIMEP);
printf ("%s", CTime (&TIMEP));
}
Perform
Sat Oct 28 10:12:05 2000
3.gettimeofday (get current time)
Related functions
Time,ctime,ftime,settimeofday
Table header File
#include <sys/time.h>
#include <unistd.h>
Defining functions
int gettimeofday (struct timeval * TV, struct timezone * tz)
Function description
Gettimeofday () returns the current time with a structure referred to by TV, and the local time zone information is placed in the structure that TZ refers to.
The TIMEVAL structure is defined as:
struct timeval{
Long tv_sec; /* sec */
Long tv_usec; /* microseconds */
};
The timezone structure is defined as:
struct timezone{
int tz_minuteswest; /* and Greenwich TIME DIFFERENCE how many minutes */
int tz_dsttime; /* Daylight Saving Time status */
};
Both of these structures are defined in/usr/include/sys/time.h. The status represented by Tz_dsttime is as follows
Dst_none/* Do not use */
DST_USA/* USA */
Dst_aust/* Australia */
Dst_wet/* Western Europe *
Dst_met/* Central Europe *
Dst_eet/* Eastern Europe *
Dst_can/* Canada */
DST_GB/* Britannia */
Dst_rum/* Romania */
Dst_tur/* Turkey * *
Dst_austalt/* Australia (after 1986) */
return value
The success returns 0, the failure returns 1, and the error code is stored in errno. Additional instructions efault the memory space referred to by the pointer TV and TZ exceeds the access permission.
Example
#include <sys/time.h>
#include <unistd.h>
Main () {
struct Timeval TV;
struct timezone tz;
Gettimeofday (&TV, &tz);
printf ("TV_SEC; %d/n ", tv.tv_sec);
printf ("TV_USEC; %d/n ", tv.tv_usec);
printf ("Tz_minuteswest; %d/n ", tz.tz_minuteswest);
printf ("Tz_dsttime,%d/n", tz.tz_dsttime);
}
Perform
tv_sec:974857339
tv_usec:136996
tz_minuteswest:-540
tz_dsttime:0
4.gmtime (get current time and date)
Related functions
Time,asctime,ctime,localtime
Table header File
#include <time.h>
Defining functions
struct Tm*gmtime (const TIME_T*TIMEP);
Function description
Gmtime () Converts the information in the time_t structure referred to by the parameter TIMEP to the time-date representation used by the real world, and then returns the result from the Fabric TM.
The structure TM is defined as
struct TM
{
int tm_sec;
int tm_min;
int tm_hour;
int tm_mday;
int Tm_mon;
int tm_year;
int tm_wday;
int tm_yday;
int tm_isdst;
};
The int tm_sec represents the current number of seconds, the normal range is 0-59, but is allowed to 61 seconds
int Tm_min represents current score, range 0-59
int Tm_hour The number of hours from midnight, with a range of 0-23
int Tm_mday The number of days in the current month, range 01-31
The int Tm_mon represents the current month, starting from January, ranging from 0-11
int tm_year number of years since 1900
int Tm_wday The number of days of the week, starting from Monday, with a range of 0-6
int Tm_yday The number of days since January 1 this year, ranging from 0-365
int TM_ISDST Daylight Saving time flag
The time date returned by this function is not converted by the time zone, but UTC time.
return value
Returns the structure TM representing the current UTC time
Example
#include <time.h>
Main () {
Char *wday[]={"Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"};
time_t TIMEP;
struct TM *p;
Time (&TIMEP);
P=gmtime (&TIMEP);
printf ("%d%d%d", (1900+p->tm_year), (1+p->tm_mon), p->tm_mday);
printf ("%s%d;%d;%d/n", Wday[p->tm_wday], P->tm_hour, P->tm_min, p->tm_sec);
}
Perform
2000/10/28 Sat 8:15:38
5.localtime (local current time and date obtained)
Related functions
Time, Asctime, CTime, gmtime
Table header File
#include <time.h>
Defining functions
struct TM *localtime (const time_t * TIMEP);
Function description
LocalTime () Converts the information in the time_t structure referred to by the parameter TIMEP to the time-date representation used by the real world, and then returns the result from the Fabric TM. Please refer to Gmtime () for the definition of structure TM. The time date returned by this function has been converted to the local time zone.
return value
Returns the structure TM representing the current local time.
Example
#include <time.h>
Main () {
Char *wday[]={"Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"};
time_t TIMEP;
struct TM *p;
Time (&TIMEP);
P=localtime (&TIMEP); /* Get local time */
printf ("%d%d%d", (1900+p->tm_year), (L+p->tm_mon), p->tm_mday);
printf ("%s%d:%d:%d/n", Wday[p->tm_wday],p->tm_hour, P->tm_min, p->tm_sec);
}
Perform
2000/10/28 Sat 11:12:22
6.mktime (convert time structure data to elapsed seconds)
Related functions
Time,asctime,gmtime,localtime
Table header File
#include <time.h>
Defining functions
time_t mktime (Strcut TM * timeptr);
Function description
The Mktime () is used to convert the TM structure data referred to by the parameter timeptr to the number of seconds elapsed since the UTC time of January 1, 1970 0:0 0 seconds.
return value
Returns the number of seconds elapsed.
Example
/* Take time (in seconds) using localtime ()
Convert to a struct TM and then use Mktine () to convert the struct TM to the original number of seconds */
#include <time.h>
Main ()
{
time_t TIMEP;
Strcut TM *p;
Time (&TIMEP);
printf ("Time ():%d/n", TIMEP);
P=localtime (&TIMEP);
TIMEP = Mktime (p);
printf ("Time ()->localtime ()->mktime ():%d/n", TIMEP);
}
Perform
Time (): 974943297
Time ()->localtime ()->mktime (): 974943297
7.settimeofday (set current time)
Related functions
Time,ctime,ftime,gettimeofday
Table header File
#include <sys/time.h>
#include <unistd.h>
Defining functions
int settimeofday (const struct timeval *tv,const struct timezone *tz);
Function description
Settimeofday () Sets the current time to the structure information referred to by TV, and the local time zone information is set to the structure referred to by TZ. Please refer to Gettimeofday () for detailed instructions. Note that only root permissions can be used to modify the time of this function.
return value
The success returns 0, the failure returns 1, and the error code is stored in errno.
Error code
Eperm does not call Settimeofday () by root, and does not have sufficient permissions.
EINVAL time zone or some data is incorrect and cannot be set correctly.
8.time (get current time)
Related functions
Ctime,ftime,gettimeofday
Table header File
#include <time.h>
Defining functions
time_t time (time_t *t);
Function description
This function returns the number of seconds from 0:0 to 0 seconds since the UTC time in A.D. January 1, 1970. If T is not a null pointer, this function also saves the return value to the memory referred to by the T-pointer.
return value
Success returns the number of seconds, and failure returns the ((time_t)-1) value, which causes the error to exist in errno.
Example
#include <time.h>
Main ()
{
int seconds= time ((time_t*) NULL);
printf ("%d/n", seconds);
}
Perform
9.73E+08
The 9.strftime () function formats the time
We can use the strftime () function to format the time as we want. Its prototype is as follows:
size_t strftime (
Char *strdest,
size_t MaxSize,
const Char *format,
Const struct TM *timeptr
);
We can place the time information stored in the timeptr in the string pointed to by the strdest, with a maximum of maxsize characters in the strdest, according to format commands in format point to String. The function returns the number of characters placed in the string pointed to by strdest. The function strftime () operates somewhat like sprintf (): Identifies a collection of formatting commands that begin with a percent sign (%), and the formatted output is placed in a string. The format command describes the exact representation of the various date and time information in the string strdest. Other characters in the format string are placed in the string as is. The format commands are listed below, and they are case-sensitive.
%a shorthand for the day of the week
%A full name of the week
%b of the Month
Full name of the%B month
Time string for the date of%c standard
After two digits of the%c year
The day ordinal of a month in%d decimal notation
%d Month/day/year
%e the day ordinal of a month in a two-character field, in decimal notation
%F year-month-day
%g two digits of the year, using week-based
%G years, using week-based years
%h Abbreviated month name
%H 24-Hour Hour
%I 12-Hour Hour
%j decimal indicates the day ordinal of the year
%m the month represented by decimal
%M minutes in a 10 o'clock-hour representation
%n New Line character
%p equivalent display of the local AM or PM
%r 12 hours of time
%R display hours and minutes: hh:mm
%s number of seconds in decimal
%t Horizontal Tab
%T display time seconds: hh:mm:ss
%u days of the week, Monday for the first day (values from 0 to 6, Monday to 0)
%u year of the week, the Sunday as the first day (value from 0 to 53)
%V Week of the year, using week-based
%w Decimal Day of the week (value from 0 to 6, Sunday is 0)
%W Week of the year, Monday as the first day (value from 0 to 53)
Date string for%x standard
Time string for%x standard
%y decimal Year without century (values from 0 to 99)
%Y 10 year with century part
%z,%z the time zone name and returns a null character if the time zone name cannot be obtained.
Percent hundred percent semicolon
If you want to show what time it is now and display it as a 12-hour system, just like this procedure:
#i nclude "Time.h"
#i nclude "Stdio.h"
int main (void)
{
struct TM *ptr;
time_t lt;
Char str[80];
Lt=time (NULL);
Ptr=localtime (<);
Strftime (str,100, "It's now%I%p", PTR);
printf (str);
return 0;
}
The result of this operation is:
It's now 4PM
The following program displays the current full date:
#include
#nclude
void Main (void)
{
struct TM *newtime;
Char tmpbuf[128];
time_t LT1;
Time (<1);
Newtime=localtime (<1);
Strftime (Tmpbuf, "Today is%A, day%d of%B in the year%y./n", NewTime);
printf (TMPBUF);
}
Instance:
Ld_s32 setsystime (ld_s32 syssec)
{
struct Timeval tv_set;
Tv_set.tv_sec = syssec;
tv_set.tv_usec = 0;
if (Settimeofday (&tv_set,null) <0)
{
debugprintf ("Set Time to%d failed!\n", syssec);
return ld_failure;
}
Else
{
debugprintf ("Set Time to%d success!\n", syssec);
return ld_success;
}
}
Second, the use of NtpClient synchronization time
NtpClient
Options:
-C Count Stop after count count time (default = 0 means until forever)
-D Print Diagnostics (feature can be turned off at compile time)
The-G option causes the program to get more accurate results after ntpclient, not just (microseconds, default = 0 means until it is stopped forever)
-H Host name (IP address) (mandatory) NTP server, measured against system time
-I interval time check time every time (default value is 600)
-I attempts the server to use Adjtimex to lock the local clock (2)
-P port Name locks the local NTP client UDP port (default = 0 means "any available")
-Q Minimum Delay minutes minimum packet delay trade (default 800 microseconds)
-R in the standard input replay analysis code
-S simple clock setting (equivalent to-C 1)
-T Trust network and server, no RFC-4330 recommended check
Synchronization Time Example:
$ ntpclient-s-t-i 10-h 202.120.2.101
Instance:
sprintf (buf, "Ntpclient-o-s-c%d-i 15-h%s", count, Pntpsrv);
if (RUNSYSCMD2 (buf, buf, sizeof (BUF)))
{
debugprintf ("Run ntpclient command failed!\n");
return ld_failure;
}
Linux time-related operations 20170607