jquery前端框架教程,网站分析与优化,lol网站怎么做,自己的网站怎么能让百度搜出来文章目录 一、序1.1 时间和时区1.11 时间1.12 时区 1.2 查看时间时区的命令1.21 Windows1.22 Linux 二、C语言函数2.1 通用2.11 函数简介2.12 数据类型简介 2.2 windows 和 Linux特有函数2.3 C语言示例 一、序
1.1 时间和时区
1.11 时间
时间是一种用来描述物体运动变化的量… 文章目录 一、序1.1 时间和时区1.11 时间1.12 时区 1.2 查看时间时区的命令1.21 Windows1.22 Linux 二、C语言函数2.1 通用2.11 函数简介2.12 数据类型简介 2.2 windows 和 Linux特有函数2.3 C语言示例 一、序
1.1 时间和时区
1.11 时间
时间是一种用来描述物体运动变化的量它可以用光的运动路程与常数c的比值来定义。不同的物体或观察者可能感受到不同的时间流逝速度这就是相对论中的时间膨胀效应…
时间中存在许多特殊的概念其中一些是与日历、日期和时间测量相关的。以下是一些常见的特殊时间概念 闰年Leap Year为了与地球的自转周期相匹配每四年有一个闰年。闰年有366天而不是普通年份的365天。2月份会多出一天变成29天。 闰秒Leap Second为了保持协调世界时UTC与国际原子时TAI之间的同步不定期地会插入闰秒。这意味着某一天会有额外的一秒通常在UTC的最后一分钟插入。 夏令时Daylight Saving Time一些国家和地区在夏季将时钟向前调整一小时通常在春季开始秋季结束。这旨在节约能源延长白天的活动时间。 格林尼治标准时间Greenwich Mean TimeGMT以英国伦敦的格林尼治皇家天文台为基准的时间标准。UTC现在通常被视为国际时间标准但GMT仍然用于某些上下文中。 纪元Epoch纪元是一个特定日期或时间点通常用作计算机系统中时间的起点。例如UNIX操作系统使用1970年1月1日午夜格林尼治时间作为纪元。 星期星期是一周的周期性单位通常有七天。星期中的每一天都有自己的名称如星期一、星期二和缩写如周一、周二。 季节季节是一年中的四个时期分别是春季、夏季、秋季和冬季。季节的开始和结束时间因地理位置而异。 日落和日出日落是太阳在地平线以下消失的时间点日出是太阳在地平线上升起的时间点。这些时间在不同季节和地点有所变化。 时间戳Timestamp时间戳是一个特定时间点的表示通常以秒数或毫秒数等形式存在。时间戳在计算机系统中用于记录事件和操作的时间信息。 这些特殊的时间概念在日常生活、科学、计算机编程和全球协调等方面都有重要作用它们帮助我们精确测量和记录时间以满足各种需求和要求。 时间标准
时间标准定义特点TAI国际原子时是一种使用约400个高精度原子钟的组合输出来测量的时间尺度提供了我们的时钟应该走的准确速度UTC协调世界时是一种用来确定世界各地本地时间的时间尺度。它由两个部分组成TAI和UT1由于地球自转速度的变化导致UTC和TAI之间会有差异。为了保持UTC和UT1之间的差异不超过0.9秒会在UTC中加入或减去闰秒UT1世界时也称为天文时间指的是地球的自转。它用来比较TAI提供的速度和地球上一天的实际长度受到地球自转速度变化、地震、潮汐等因素的影响GMT格林威治标准时间指的是位于伦敦郊区的皇家格林威治天文台的标准时间因为本初子午线被定义在通过那里的经线UTC和GMT可以视为无差别GMT是以原子时计时更加精准一般使用不需要精确到秒时视为等同
1.12 时区
地球被分为24个时区每个时区代表地球上一个特定的经度范围。时区的目的是在地球上的不同地方保持相对一致的时间以便协调跨越多个地理区域的活动。 这很好理解地球是球体太阳无法同时照亮各地太阳照射角度也不同 时区的概念起源于铁路和电报的发展。19世纪中期铁路和电报使信息和人员快速传输变得可能但不同城市使用不同的本地时间这导致了混乱。因此国际时间会议于1884年召开决定将地球划分为24个时区每个时区相差15度经度。
全球大部分地区都采用了这个时区系统但还有一些例外如印度和新尼泊尔时区它们使用不同的偏移量。此外一些国家也采用夏令时制度以调整时钟以节省能源。 除了日常生活以外。当你购买一个国外其他时区的服务器在上面部署某些服务时就就有可能会遇到时区未正确设置而无法运行的情况或者一种常见的情况是电脑时间时区不正确时浏览器和应用程序可能会无法联网。 时区24个相邻时区时间差一个小时。但是很多国家国土会跨越多个时区比如上海已经晚上了而新疆太阳还没下山为了避免混乱国家会设置一个单一的时间标准。比如中国标准时间China Standard TimeCST也称为北京时间Beijing TimeBT。
如上图东半球时间通常早于西半球。东半球和西半球之间的时间分界线是称为国际日期变更线International Date LineIDL。国际日期变更线是一条虚拟的线它沿着地球东西走向大致沿着经度180度附近的线路。这个线上的一侧被认为是东半球另一侧被认为是西半球。
1.2 查看时间时区的命令
1.21 Windows
图形界面不说了。 tzutil 是 Windows 系统中用于查看和设置时区的命令行工具 tzutil /g查看本地计算机当前的时区。tzutil /l查看所有有效的时区 ID 及其名称。tzutil /s timezoneid设置本地计算机的时区为指定的 ID。 date 和 time 是 Windows 系统中用于查看和修改日期和时间的命令行工具 date查看或修改本地计算机当前的日期。time查看或修改本地计算机当前的时间。date /t只查看本地计算机当前的日期不进行修改。time /t只查看本地计算机当前的时间不进行修改。
1.22 Linux 自己查看帮助手册获取更多参数。 查看当前时间 使用 date 命令来查看当前系统的时间。 date查看当前日期 使用 date 命令并指定格式选项 -d 来查看当前系统的日期。 date -d查看当前时区 使用 timedatectl 命令来查看当前的时区设置。 timedatectl查看可用的时区列表 使用 timedatectl 命令来列出系统支持的所有时区。 timedatectl list-timezones更改时区 使用 timedatectl 命令来更改系统的时区设置。例如要将时区更改为“America/New_York” sudo timedatectl set-timezone America/New_York启用/禁用夏令时 使用 timedatectl 命令来启用或禁用夏令时。例如 sudo timedatectl set-timezone America/New_York
sudo timedatectl set-local-rtc 1同步系统时间 使用 ntpdate 命令来手动同步系统时间与网络时间服务器。例如 sudo ntpdate time.nist.gov在 Linux 系统中time 命令用于测量执行命令或程序所花费的时间。它可以帮助评估程序的性能以及执行时间。要使用 time 命令请在终端中键入 time然后紧跟要执行的命令。以下是示例
time lscpu上述命令将测量执行 lscpu 命令所需的时间并显示三个关键时间信息
real实际经过的时间从命令开始到完成的总时间。userCPU 用户模式时间即命令在用户空间中花费的时间。sysCPU 内核模式时间即命令在内核空间中花费的时间。
例如如果执行 time lscpu 命令会看到如下输出
...
real 0m0.028s
user 0m0.004s
sys 0m0.024s这表示 ls 命令实际花费了0.028秒的时间其中0.004秒在用户模式中使用CPU0.024秒在内核模式中使用CPU。
time 命令对于评估命令或程序的性能非常有用特别是在优化代码或比较不同实现的执行时间时。请注意time 命令不是用来设置系统时间或时区的命令而是用来测量命令执行时间的工具。 二、C语言函数
2.1 通用
2.11 函数简介
位于time.h中
函数函数原型输入输出作用注意点time()time_t time(time_t *time_ptr);time_ptr - 一个 time_t 指针time_t - 时间值返回自1970年1月1日以来的秒数用本地时间计算的ctime()char *ctime(const time_t *time_ptr);time_ptr - 一个 time_t 指针char * - 时间字符串将时间值转换为可读的日期和时间字符串字符串可能以换行符结尾需要适当处理strftime()size_t strftime(char *str, size_t maxsize, const char *format, const struct tm *timeptr);str - 字符数组maxsize - 最大字符数format - 格式化字符串timeptr - struct tm 结构size_t - 格式化后的字符数将时间值格式化为自定义字符串格式需要使用适当的格式字符串结构体 tm 需要正确设置gmtime()struct tm *gmtime(const time_t *time_ptr);time_ptr - 一个 time_t 指针struct tm * - 时间结构体将时间值转换为世界标准时间UTC的 struct tm 结构需要注意时区和夏令时的差异返回的结构体表示UTC时间localtime()struct tm *localtime(const time_t *time_ptr);time_ptr - 一个 time_t 指针struct tm * - 时间结构体将时间值转换为本地时间的 struct tm 结构时区和夏令时规则会影响结果返回的结构体表示本地时间difftime()double difftime(time_t time1, time_t time2);time1 和 time2 - 两个 time_t 值double - 时间差秒计算两个时间值之间的时间差返回的是一个浮点数可用于比较不同时间之间的时间差mktime()time_t mktime(struct tm *timeptr);timeptr - struct tm 结构体time_t - 时间值将 struct tm 结构体表示的时间转换为 time_t 类型的时间值结构体字段需要正确设置不支持负数年份asctime()char *asctime(const struct tm *timeptr);timeptr - struct tm 结构体char * - 时间字符串将 struct tm 结构体表示的时间转换为可读的日期和时间字符串返回的字符串可能以换行符结尾需要适当处理
2.12 数据类型简介
time_t定义
typedef long time_t;这个定义意味着 time_t 是一个长整型long数据类型。在许多系统中time_t 被定义为从1970年1月1日至今的秒数用于表示时间戳。在不同的系统和编译环境中time_t 的具体类型可能会有所不同但通常它被定义为整数类型。
对于不同的操作系统和编译器time_t 的实现可能会有所不同但它的目的是为了提供一个可移植的方式来表示时间。程序员在使用 time_t 时应该遵循标准库中相关函数的文档和规范以确保在不同平台上的兼容性。 1970年1月1日被选为UNIX时间起始点是因为这是UNIX操作系统的创建者之一、美国计算机科学家肯·汤普森Ken Thompson在当时的UNIX实现中选择的日期。 这个日期的选择实际上是一种约定因为计算机科学家需要一种标准方式来表示时间。UNIX时间是一种以秒为单位的计时方式从1970年1月1日0时0分0秒UTC开始表示自那时以来的秒数。这个日期被选为UNIX时间的起点主要是因为它相对容易计算而且在当时的UNIX系统中也很方便。 此外1970年1月1日0时0分0秒UTC也被选为UNIX时间起始点因为它位于协调世界时Coordinated Universal TimeUTC中并且在计算时间时避免了涉及夏令时DST等时区变化的复杂性。这使得UNIX时间在不同地区和不同计算机系统上都可以保持一致。 从1970年1月1日开始的UNIX时间在计算机科学和软件工程中广泛使用尤其是在操作系统、数据库、文件系统和网络协议中。因此这个日期成为了一个重要的时间基准用于表示和计算时间间隔以及在计算机系统之间进行时间戳的交换。 结构体原型这里 把2.2节的顺便写了 稍微看一下注释比如月份从0开始年数以1900开始计算。1890就写-10 struct tm 结构体在 time.h 中定义 struct tm {int tm_sec; // 秒0-59int tm_min; // 分钟0-59int tm_hour; // 小时0-23int tm_mday; // 月中的天数1-31int tm_mon; // 月0-110 表示 1 月int tm_year; // 年份自 1900 年起的年数int tm_wday; // 星期几0-60 表示星期日int tm_yday; // 年中的天数0-365int tm_isdst; // 夏令时标志正数表示 DST0 表示不是 DST负数表示不确定
};SYSTEMTIME 结构体在 windows.h 中定义 typedef struct _SYSTEMTIME {WORD wYear; // 年份WORD wMonth; // 月份WORD wDayOfWeek; // 星期几0-60 表示星期日WORD wDay; // 月中的天数1-31WORD wHour; // 小时0-23WORD wMinute; // 分钟0-59WORD wSecond; // 秒0-59WORD wMilliseconds; // 毫秒
} SYSTEMTIME;struct timeval 结构体在 sys/time.h 中定义通常用于 Linux 和 Unix 系统 struct timeval {long tv_sec; // 秒long tv_usec; // 微秒
};struct timespec 结构体在 time.h 中定义通常用于 Linux 和 Unix 系统 struct timespec {time_t tv_sec; // 秒long tv_nsec; // 纳秒
};这些结构体用于表示时间的各个方面包括年、月、日、时、分、秒等并且在与时间相关的C函数中经常用于输入和输出。请注意SYSTEMTIME 结构体是Windows特有的而 struct timeval 和 struct timespec 结构体通常用于Linux和Unix系统。
2.2 windows 和 Linux特有函数
在Windows下
函数函数原型头文件输入输出作用注意点GetSystemTime()void GetSystemTime(SYSTEMTIME *lpSystemTime);windows.hlpSystemTime - 一个 SYSTEMTIME 结构指针无获取系统时间UTC以年、月、日、时、分、秒等形式返回无GetLocalTime()void GetLocalTime(SYSTEMTIME *lpSystemTime);windows.hlpSystemTime - 一个 SYSTEMTIME 结构指针无获取本地时间考虑了时区和夏令时规则以年、月、日、时、分、秒等形式返回无GetTickCount()DWORD GetTickCount(void);windows.h无返回自系统启动以来的毫秒数无
在Linux下
函数函数原型头文件输入输出作用注意点gettimeofday()int gettimeofday(struct timeval *tv, struct timezone *tz);sys/time.htv - 一个 struct timeval 结构指针tz - 一个 struct timezone 结构指针可传入NULL 0成功或-1失败获取当前时间包括秒和微秒可用于高精度计时需要检查返回值以处理错误struct timezone 在许多系统中被忽略clock_gettime()int clock_gettime(clockid_t clk_id, struct timespec *tp);time.hclk_id - 时钟标识tp - 一个 struct timespec 结构指针0成功或-1失败获取高分辨率的时间信息可选择不同的时钟源需要检查返回值以处理错误时钟标识和支持的时钟源因系统而异
2.3 C语言示例
简单示例吧自己结合前面的结构体定义、函数原型和功能介绍。应用还是很广泛的。
需要注意一些换算尤其是gm这个结构体time_t 变量是从1970-1-1开始计算的tm结构体变量的成员是从1900年开始的月数、星期几、天数从0开始。
struct tm {int tm_sec; // 秒0-59int tm_min; // 分钟0-59int tm_hour; // 小时0-23int tm_mday; // 月中的天数1-31int tm_mon; // 月0-110 表示 1 月int tm_year; // 年份自 1900 年起的年数int tm_wday; // 星期几0-60 表示星期日int tm_yday; // 年中的天数0-365int tm_isdst; // 夏令时标志正数表示 DST0 表示不是 DST负数表示不确定
};Linux下
输出 代码示例
#include stdio.h
#include string.h
#include sys/time.h
#include time.hint main() {struct timeval current_time;struct tm set_time { 0, 0, 0, 1, 0, 120, },*diff_readable;char time_str[30], *p;if (gettimeofday(current_time, NULL) 0) {p ctime(current_time.tv_sec);printf(Current time is %s, p); // 注意这里的字符串本来就是以换行符结尾的printf(It has passed %ld seconds %ld microseconds since 1970-1-1\n, current_time.tv_sec, current_time.tv_usec);} else {perror(gettimeofday);}time_t set_t mktime(set_time);printf(I set a time: %s, asctime(set_time));double diff difftime(current_time.tv_sec, set_t);printf(Time diff between current time and set time is %ld seconds\n,(long)(diff));time_t diff_time (time_t)diff;diff_readable localtime(diff_time);printf(Transform to be readable :%d yesrs %d months %d days %d hours\n,diff_readable-tm_year-70, diff_readable-tm_mon1,diff_readable-tm_mday, diff_readable-tm_hour);return 0;
} Windows下
使用Windows API 输出
Current time:2023-10-6-14:47
Current time:2023-10-6-22:47
It has passed 249 hours since PC started源码
#include stdio.h
#include string.h
#include windows.hint main() {SYSTEMTIME system_time {0}, local_time {0};GetSystemTime(system_time);printf(Current time:%u-%u-%u-%u:%u\n,system_time.wYear, system_time.wMonth, system_time.wDay,system_time.wHour, system_time.wMinute);GetLocalTime(local_time);printf(Current time:%u-%u-%u-%u:%u\n, local_time.wYear, local_time.wMonth, local_time.wDay,local_time.wHour, local_time.wMinute);printf(It has passed %lu hours since PC started\n,GetTickCount()/(1000*60*60));return 0;
}
使用time.h 输出
Current time(local): Fri Oct 6 23:00:39 2023Current time(UTC): Fri Oct 6 15:00:39 2023源码
#include stdio.h
#include string.h
#include time.hint main() {char current_time[30] {0}, *p;time_t time_second;struct tm* utc_time;time(time_second);p current_time;p ctime(time_second);printf(Current time(local): %s\n,p);utc_time gmtime(time_second);time_t UTC mktime(utc_time);p ctime(UTC);printf(Current time(UTC): %s\n,p);return 0;
}
总结
一般使用time.h的函数就能完成所有工作不过在特定系统下使用对应的API获取时间会更快更精确。 文章转载自: http://www.morning.zqzhd.cn.gov.cn.zqzhd.cn http://www.morning.prqdr.cn.gov.cn.prqdr.cn http://www.morning.xrrbj.cn.gov.cn.xrrbj.cn http://www.morning.rdgb.cn.gov.cn.rdgb.cn http://www.morning.wfkbk.cn.gov.cn.wfkbk.cn http://www.morning.jbztm.cn.gov.cn.jbztm.cn http://www.morning.mzwfw.cn.gov.cn.mzwfw.cn http://www.morning.pcxgj.cn.gov.cn.pcxgj.cn http://www.morning.drswd.cn.gov.cn.drswd.cn http://www.morning.qnhpq.cn.gov.cn.qnhpq.cn http://www.morning.nkkr.cn.gov.cn.nkkr.cn http://www.morning.xdqrz.cn.gov.cn.xdqrz.cn http://www.morning.qlhwy.cn.gov.cn.qlhwy.cn http://www.morning.ykwgl.cn.gov.cn.ykwgl.cn http://www.morning.mwlxk.cn.gov.cn.mwlxk.cn http://www.morning.gwzfj.cn.gov.cn.gwzfj.cn http://www.morning.nd-test.com.gov.cn.nd-test.com http://www.morning.xpqdf.cn.gov.cn.xpqdf.cn http://www.morning.mwmtk.cn.gov.cn.mwmtk.cn http://www.morning.dsprl.cn.gov.cn.dsprl.cn http://www.morning.hqmfn.cn.gov.cn.hqmfn.cn http://www.morning.zpxwg.cn.gov.cn.zpxwg.cn http://www.morning.syssdz.cn.gov.cn.syssdz.cn http://www.morning.rpms.cn.gov.cn.rpms.cn http://www.morning.nlrp.cn.gov.cn.nlrp.cn http://www.morning.lrybz.cn.gov.cn.lrybz.cn http://www.morning.jqlx.cn.gov.cn.jqlx.cn http://www.morning.ylsxk.cn.gov.cn.ylsxk.cn http://www.morning.bzcjx.cn.gov.cn.bzcjx.cn http://www.morning.gnlyq.cn.gov.cn.gnlyq.cn http://www.morning.hkcjx.cn.gov.cn.hkcjx.cn http://www.morning.qfbzj.cn.gov.cn.qfbzj.cn http://www.morning.stbhn.cn.gov.cn.stbhn.cn http://www.morning.grnhb.cn.gov.cn.grnhb.cn http://www.morning.plhyc.cn.gov.cn.plhyc.cn http://www.morning.rltw.cn.gov.cn.rltw.cn http://www.morning.mjbkp.cn.gov.cn.mjbkp.cn http://www.morning.spqbp.cn.gov.cn.spqbp.cn http://www.morning.grbgn.cn.gov.cn.grbgn.cn http://www.morning.spxk.cn.gov.cn.spxk.cn http://www.morning.cbtn.cn.gov.cn.cbtn.cn http://www.morning.zkqsc.cn.gov.cn.zkqsc.cn http://www.morning.nxzsd.cn.gov.cn.nxzsd.cn http://www.morning.wpmqq.cn.gov.cn.wpmqq.cn http://www.morning.zrks.cn.gov.cn.zrks.cn http://www.morning.ykmkz.cn.gov.cn.ykmkz.cn http://www.morning.dxgt.cn.gov.cn.dxgt.cn http://www.morning.nsppc.cn.gov.cn.nsppc.cn http://www.morning.dzrcj.cn.gov.cn.dzrcj.cn http://www.morning.ckhry.cn.gov.cn.ckhry.cn http://www.morning.c-ae.cn.gov.cn.c-ae.cn http://www.morning.mkydt.cn.gov.cn.mkydt.cn http://www.morning.wxlzr.cn.gov.cn.wxlzr.cn http://www.morning.zsthg.cn.gov.cn.zsthg.cn http://www.morning.rqsnl.cn.gov.cn.rqsnl.cn http://www.morning.qhnmj.cn.gov.cn.qhnmj.cn http://www.morning.rfhwc.cn.gov.cn.rfhwc.cn http://www.morning.xlyt.cn.gov.cn.xlyt.cn http://www.morning.dfkmz.cn.gov.cn.dfkmz.cn http://www.morning.nyplp.cn.gov.cn.nyplp.cn http://www.morning.qbxdt.cn.gov.cn.qbxdt.cn http://www.morning.rqknq.cn.gov.cn.rqknq.cn http://www.morning.hjrjr.cn.gov.cn.hjrjr.cn http://www.morning.xnlj.cn.gov.cn.xnlj.cn http://www.morning.sknbb.cn.gov.cn.sknbb.cn http://www.morning.cklld.cn.gov.cn.cklld.cn http://www.morning.ngkng.cn.gov.cn.ngkng.cn http://www.morning.rkxqh.cn.gov.cn.rkxqh.cn http://www.morning.jwncx.cn.gov.cn.jwncx.cn http://www.morning.xmhpq.cn.gov.cn.xmhpq.cn http://www.morning.zbkdm.cn.gov.cn.zbkdm.cn http://www.morning.qnzld.cn.gov.cn.qnzld.cn http://www.morning.sgfgz.cn.gov.cn.sgfgz.cn http://www.morning.pgggs.cn.gov.cn.pgggs.cn http://www.morning.wmfny.cn.gov.cn.wmfny.cn http://www.morning.ysqb.cn.gov.cn.ysqb.cn http://www.morning.tpqrc.cn.gov.cn.tpqrc.cn http://www.morning.rfpb.cn.gov.cn.rfpb.cn http://www.morning.rbffj.cn.gov.cn.rbffj.cn http://www.morning.fnpyk.cn.gov.cn.fnpyk.cn