精华内容
下载资源
问答
  • 4、进入后会看到显示拍摄时间和拍摄地点没有打开。5、打开“显示拍摄时间”和“显示拍摄地点”以后,再返回到图片中就可以看到了。怎样设置 宽带连接 在开机时自动连接?第一步 准备工作。利用Windows XP内置的拨号...

    华为手机照相有时间日期显示设置方法如下:

    1、在手机界面找到图库点击打开。

    2、进入图库后选择一张照片打开。

    3、打开图片后、点击下图所示右上角的选项。

    4、进入后会看到显示拍摄时间和拍摄地点没有打开。

    5、打开“显示拍摄时间”和“显示拍摄地点”以后,再返回到图片中就可以看到了。

    怎样设置 宽带连接 在开机时自动连接?

    第一步 准备工作。

    利用Windows XP内置的拨号程序建立ADSL连接,并将该连接命名为“adsl”,注意在拨号窗口中选中“保存密码”项。

    并取消连接属性/选项中“连接时显示进度”、“提示名称、密码、证书”前的小钩!第二步 确保开机后自动拨号。

    打开“开始→设置→控制面板→计划任务→添加计划任务”,选择执行的程序windows\system32\rasphone.exe,并且选中“计算机启动时”,接着输入系统管理员的登录账号和密码。

    完成后双击计划任务中的“rasphone”一项打开其属性窗口,在“任务”选项卡的“运行”栏的命令后加上“-d "adsl"”(请注意命令的格式:“-d”与原有内容之间有个空格,输入时注意去掉外面的全角引号)。

    第三步 确保系统注销后自动拨号不断开。

    打开“注册表编辑器”,找到[HKEY_LOCAL_MACHINE\Software\Microsoft\Win NT\CurrentVersion\Winlogon],在右侧窗格新建一个名为KeepRasConnections的字符串值,将其值设置为1。

    本人不推荐此设置,这样设置的话将影响到重启系统后自动拨号,会提示电话占线的。

    第四步 确保网络断线时自动重拨。

    右击“网上邻居”,选择“属性”,在弹出的窗口中右击第一步建立的ADSL连接,选择“属性”,进入“选项”选项卡,将“挂断前的空闲时间”设置为“从不”,勾选“断线重拨”,将“重拨次数”设置为100或者更多、“尝试重拨之间的时间”设置为1秒把ADSL属性--选项--提示名称密码和证书等去掉就行了如果禁止:右击网上邻居属性--->高级菜单--->拨号首选项--->自动拨号--->把“当我登录时禁用自动拨号功能”勾去掉就OK了~~

    win7如何设置开机自动联网

    windows 7操作系统中可以参考以下步骤:1.在开始搜索框中输入ncpa.cpl,按回车;2.在已经设立的连接图标上,右击鼠标,选择属性;3.在选项标签中,确认提示名称、密码、凭证等这个选项前没有打勾;然后,点击确定;4.在连接图标上,右击鼠标,选择建立快捷方式;5.Windows 会问是否将快捷方式放在桌面上,点是;6.回到桌面,在快捷方式图标上,右击鼠标,选择复制;7.接着,再按一下开始按钮,选择所有程序;8.右击启动,选择打开所有用户;9.在新打开的窗口中,于空白处点鼠标右键,选粘贴,设定完成。

    如何设置桌面的“宽带连接”为开机自动启动并连接?

    答:1、IE-- 工具--internet选项--连接,选“始终默认连接”,点击“设置”打开“XX设置”对话框—在“拨号设置”区中填写“用户名”、“密码”—确定。

    2、在“拨号连接”中,勾选“为下列用户保存用户名和密码”,选“任何使用此算机的人”—拨号。

    3、宽带—属性—选项---把“提示名称、密码、凭证等”的勾去掉 。

    4、开始—连接到—显示所有连接, (1)右击本地连接—属性—常规—点选Internet协议(TCP/IP)--属性—选使用下面的IP地址(这是我的IP地址,你的IP地址网络商会告诉你): IP地址:192.168.0.2 子网掩码:255.255.255.0 默认网关:192.168.0.1。

    使用下面的DNS服务器地址(我的服务器地址,你的去问网络商): 首选:1.1.1.1 备用:24.24.24.24 (2)右击宽带连接—属性—网络—选自动获得IP地址—确定。

    5、在桌面用鼠标把“我的宽带连接”快捷图标拖到开始 -所有程序-启动中。

    6、修改注册表自动连接 在Windows XP操作系统的开始菜单中执行“运行”命令,输入regedit,打开注册表编辑窗口; 进入注册表“HKEY_Current_User\Software\Microsoft\Windows\CurrentVersion\ InternetSettings”分支,在对应的InternetSettings右边窗口中,将“EnableAutodial”键值设置为 “01000000”(如果要关闭该功能,将键值设置为“00000000”)。

    设置完成后,重新启动计算机,就能进行自动拨号了。

    Win7如何设置开机自动连接宽带!

    可以在控制面板里面设置,具体步骤如下。

    1.首先点击电脑最左下角的开始图标,然后点击“控制面板” 。

    2.在打开的控制面板设置窗口里点击“网络和Internet” 。

    3.然后点击“网络和共享中心”。

    4.在网络和共享中心设置窗口里点击“更改适配器设置”。

    5.右键“宽带连接”,然后点击“属性”。

    6.在宽带连接属性设置窗口里点击“选项”,然后把拨号选项那里的3个勾给去掉,设置完之后,点击“确定”。

    7.右键计算机图标,然后点击“管理” 。

    8.在计算机管理窗口中,我们点击“任务计划程序”。

    9.然后我们点击右边的“创建任务”。

    10.名称那里随便填上一个任务的名字。

    11.我们点击“触发器”,然后点击“新建” 。

    12.开始任务那里选择登陆时,然后在高级那里,延时任务时间 选择30秒。

    13.点击“操作”,然后点击“新建” 。

    14.在程序或者脚本那里我们输入 %Windir%\System32\rasphone.exe,-d ADSL 宽带连接 ,这里的宽带连接是指你自己电脑上的宽带连接的名字,这个要根据大家的不同而设置。

    15.在弹出的任务确认窗口里,我们点击“是”,就完成了所有的操作步骤了。

    怎样设置电脑开机的时候自动连接宽带啊,就是说自动拨号上网,不需...

    首先“开始菜单-设置-网络连接”,在你建立的adsl拨号连接图标上点击鼠标右键,再选择“属性-选项”,将“提示名称.密码和证书等”前面的勾去掉,然后保存修改。

    再到将桌面上或者“网络连接”中的拨号连接图标复制,右键点击任务栏,选择“属性-开始菜单-自定义-高级”,再打开“程序-启动”,最后在'启动”文件夹中空白位置粘贴。

    假如不能复制你也以把图标拖曳到启动文件夹里.然后看启动项里有没有宽带连接.有的话请注销或重启即可自动拨号。

    也可以直接拖动adsl拨号图标到开始菜单里的“启动”栏目下。

    再有你可以搞个路由器就连上面的设置都省了,但前提是你要花钱买路由器。

    嘿嘿

    怎么设置电脑开机自动连接网络,说详细点

    宽带连接开机自动连接的三种方法:方法一1在桌面右击“宽带连接”→属性,点击选项→去掉勾选“提示名称,密码和证书等”和“连接时显示连接进度”→确定→关闭。

    2在桌面点击开始→所有程序→双击“启动”,打开了“启动”窗口。

    3将桌面上“宽带连接”图标拖到本窗口中→重启电脑生效。

    方法二1重启电脑,在弹出的拨号连接对话框中,选择“自动连接”,再单击“连接”就可以了。

    2如重启电脑后不弹出拨号连接对话框,请按下面的方法操作。

    3右击桌面“网上邻居”→属性→右击“宽带连接”→选择“取消作为默认连接”。

    4右击桌面IE图标→属性→在“连接”选项卡中选择“不论网络连接是否存在都进行拨号”→应用/确定。

    5再重启电脑,就能弹出拨号连接对话框了。

    如何设置开机自动连接无线网络

    每次开电脑都必须先点宽带连接再点连接才能上网,很麻烦。

    所以到网上找了找有什么办法可以让电脑开机后自动连接宽带上网,现在就把方法介绍给大家。

    方法/步骤在开始搜索框中输入ncpa.cpl,按回车打开网络连接;打开网络连接 在刚才设立的连接图标上,右击鼠标,选择属性;打开连接属性 在选项标签中,确认提示名称、密码、凭证等这个选项前没有打勾;然后,点击确定;取消勾选“提示名称、密码和证书等” 在连接图标上,右击鼠标,选择建立快捷方式;取消勾选“提示名称、密码和证书等” 在连接图标上,右击鼠标,选择建立快捷方式;创建快捷方式 Windows会问你是否将快捷方式放在桌面上,点是;确定创建快捷方式 回到桌面,在快捷方式图标上,右击鼠标,选择复制;复制快捷方式接着,再按一下开始按钮,选择所有程序,右击启动,选择打开所有用户;打开所有用户启动文件夹 在新打开的窗口中,于空白处点鼠标右键,选粘贴。

    粘贴快捷方式 OK,这样设置完成后,下次电脑开机之后,就会自动尝试连接网络了。

    ...

    电脑怎么自动连接网络

    网上邻居——属性——宽带连接——属性——选项——把提示名称,密码和证书等前面的勾去掉,确定,然后复制宽带连接的图标,按桌面左小角的开始——所有程序,鼠标移到启动选项——右键——打开,在打开对文件夹的空白处点右键——粘贴,就行了,下次开机就能自动连接宽带了

    电脑网络连接怎么设置

    方法1 在安装系统时对Internet连接进行设置在安装Windows XP过程中,进行Internet连接设置时,可以按提示输入用户名和密码并设置成开机自动连接宽带,这样在安装完成后每次开机就能自动连接宽带了。

    方法2 将宽带连接添加到启动组首先,设置连接时不用提示用户名、密码和证书。

    点击“开始”指向“所有程序”——>附件——>通信——>网络连接,点击“网络连接”即可打开“网络连接”窗口(或者直接在桌面上右键点“网上邻居”选择“属性”),在窗口中用鼠标右键点击“宽带连接”图标,打开“宽带连接 属性”窗口,选择“选项”选项卡,将“提示用户名、密码和证书等”前面的囗里的勾取消。

    然后点击“确定”,关闭窗口。

    这时你点击桌面上的宽带连接的快捷方式,就能自动进行连接,其间只显示连接的进度,不再提示名称、用户和证书等要求你确认。

    其次,将桌面上“宽带连接的快捷方式”拖到“启动”内。

    做法(1)∶在桌面上用鼠标指向“宽带连接的快捷方式”,左键点击它不要放手,移动鼠标指针将其拖到“开始”-->所有程序-->启动-->启动的右侧,移动到“启动”的右侧时,那里会显示多了一条黑色的粗线,这时松手放开,即可见到“启动”项目内多了一个宽带连接的快捷方式。

    做法(2):点开始——>所有程序——>(右键)启动——>打开——>然后把桌面上的宽带连接的快捷方式拖入启动文件夹中即可。

    展开全文
  • 本文从介绍基础概念入手,探讨了在C/C++中对日期和时间操作所用到的数据结构函数,并对计时、时间的获取、时间的计算和显示格式等方面进行了阐述。本文还通过大量的实例向你展示了time.h头文件中声明的各种函数...

    C/C++中怎样获取日期和时间http://www.cnblogs.com/shrimp-can/p/6721970.html

    C/C++中怎样获取日期和时间摘要: 
    本文从介绍基础概念入手,探讨了在C/C++中对日期和时间操作所用到的数据结构和函数,并对计时、时间的获取、时间的计算和显示格式等方面进行了阐述。本文还通过大量的实例向你展示了time.h头文件中声明的各种函数和数据结构的详细使用方法。 

    关键字:UTC(世界标准时间),Calendar Time(日历时间),epoch(时间点),clock tick(时钟计时单元) 

    1.概念 
    在C/C++中,对字符串的操作有很多值得注意的问题,同样,C/C++对时间的操作也有许多值得大家注意的地方。最近,在技术群中有很多网友也多次问到 过C++语言中对时间的操作、获取和显示等等的问题。下面,在这篇文章中,笔者将主要介绍在C/C++中时间和日期的使用方法. 

    通过学习许多C/C++库,你可以有很多操作、使用时间的方法。但在这之前你需要了解一些“时间”和“日期”的概念,主要有以下几个: 

    Coordinated Universal Time(UTC):协调世界时,又称为世界标准时间,也就是大家所熟知的格林威治标准时间(Greenwich Mean Time,GMT)。比如,中国内地的时间与UTC的时差为+8,也就是UTC+8。美国是UTC-5。 

    Calendar Time:日历时间,是用“从一个标准时间点到此时的时间经过的秒数”来表示的时间。这个标准时间点对不同的编译器来说会有所不同,但对一个编译系统来 说,这个标准时间点是不变的,该编译系统中的时间对应的日历时间都通过该标准时间点来衡量,所以可以说日历时间是“相对时间”,但是无论你在哪一个时区, 在同一时刻对同一个标准时间点来说,日历时间都是一样的。 

    epoch:时间点。时间点在标准C/C++中是一个整数,它用此时的时间和标准时间点相差的秒数(即日历时间)来表示。 

    clock tick:时钟计时单元(而不把它叫做时钟滴答次数),一个时钟计时单元的时间长短是由CPU控制的。一个clock tick不是CPU的一个时钟周期,而是C/C++的一个基本计时单位。 

    我们可以使用ANSI标准库中的time.h头文件。这个头文件中定义的时间和日期所使用的方法,无论是在结构定义,还是命名,都具有明显的C语言风格。下面,我将说明在C/C++中怎样使用日期的时间功能。 

    2. 计时 

    C/C++中的计时函数是clock(),而与其相关的数据类型是clock_t。在MSDN中,查得对clock函数定义如下: 

    clock_t clock( void ); 

    这个函数返回从“开启这个程序进程”到“程序中调用clock()函数”时之间的CPU时钟计时单元(clock tick)数,在MSDN中称之为挂钟时间(wal-clock)。其中clock_t是用来保存时间的数据类型,在time.h文件中,我们可以找到对 它的定义: 

    #ifndef _CLOCK_T_DEFINED 
    typedef long clock_t; 
    #define _CLOCK_T_DEFINED 
    #endif 

    很明显,clock_t是一个长整形数。在time.h文件中,还定义了一个常量CLOCKS_PER_SEC,它用来表示一秒钟会有多少个时钟计时单元,其定义如下: 

    #define CLOCKS_PER_SEC ((clock_t)1000) 

    可以看到每过千分之一秒(1毫秒),调用clock()函数返回的值就加1。下面举个例子,你可以使用公式clock()/CLOCKS_PER_SEC来计算一个进程自身的运行时间: 

    void elapsed_time() 

    printf("Elapsed time:%u secs.
    ",clock()/CLOCKS_PER_SEC); 


    当然,你也可以用clock函数来计算你的机器运行一个循环或者处理其它事件到底花了多少时间: 
    CODE:   [Copy to clipboard] 
    -------------------------------------------------------------------------------- 

    #include “stdio.h” 
    #include “stdlib.h” 
    #include “time.h” 

    int main( void ) 

       long     i = 10000000L; 
       clock_t start, finish; 
       double   duration; 
       /* 测量一个事件持续的时间*/ 
       printf( "Time to do %ld empty loops is ", i ); 
       start = clock(); 
       while( i-- )       ; 
       finish = clock(); 
       duration = (double)(finish - start) / CLOCKS_PER_SEC; 
       printf( "%f seconds
    ", duration ); 
       system("pause"); 

    在笔者的机器上,运行结果如下: 

    Time to do 10000000 empty loops is 0.03000 seconds 

    上面我们看到时钟计时单元的长度为1毫秒,那么计时的精度也为1毫秒,那么我们可不可以通过改变CLOCKS_PER_SEC的定义,通过把它定义的大一些,从而使计时精度更高呢?通过尝试,你会发现这样是不行的。在标准C/C++中,最小的计时单位是一毫秒。 

    3.与日期和时间相关的数据结构 

    在标准C/C++中,我们可通过tm结构来获得日期和时间,tm结构在time.h中的定义如下: 
    CODE:   [Copy to clipboard] 
    -------------------------------------------------------------------------------- 

    #ifndef _TM_DEFINED 
    struct tm { 
             int tm_sec;     /* 秒 ? 取值区间为[0,59] */ 
             int tm_min;     /* 分 - 取值区间为[0,59] */ 
             int tm_hour;     /* 时 - 取值区间为[0,23] */ 
             int tm_mday;     /* 一个月中的日期 - 取值区间为[1,31] */ 
             int tm_mon;     /* 月份(从一月开始,0代表一月) - 取值区间为[0,11] */ 
             int tm_year;     /* 年份,其值等于实际年份减去1900 */ 
             int tm_wday;     /* 星期 ? 取值区间为[0,6],其中0代表星期天,1代表星期一,以此类推 */ 
             int tm_yday;     /* 从每年的1月1日开始的天数 ? 取值区间为[0,365],其中0代表1月1日,1代表1月2日,以此类推 */
             int tm_isdst;   /* 夏令时标识符,实行夏令时的时候,tm_isdst为正。不实行夏令时的进候,tm_isdst为0;不了解情况时,tm_isdst()为负。*/ 
             }; 
    #define _TM_DEFINED 
    #endif 
    ANSI C标准称使用tm结构的这种时间表示为分解时间(broken-down time)。 

    而日历时间(Calendar Time)是通过time_t数据类型来表示的,用time_t表示的时间(日历时间)是从一个时间点(例如:1970年1月1日0时0分0秒)到此时的秒数。在time.h中,我们也可以看到time_t是一个长整型数: 

    #ifndef _TIME_T_DEFINED 
    typedef long time_t;         /* 时间值 */ 
    #define _TIME_T_DEFINED       /* 避免重复定义 time_t */ 
    #endif 

    大家可能会产生疑问:既然time_t实际上是长整型,到未来的某一天,从一个时间点(一般是1970年1月1日0时0分0秒)到那时的秒数(即日历时 间)超出了长整形所能表示的数的范围怎么办?对time_t数据类型的值来说,它所表示的时间不能晚于2038年1月18日19时14分07秒。为了能够 表示更久远的时间,一些编译器厂商引入了64位甚至更长的整形数来保存日历时间。比如微软在Visual C++中采用了__time64_t数据类型来保存日历时间,并通过_time64()函数来获得日历时间(而不是通过使用32位字的time()函 数),这样就可以通过该数据类型保存3001年1月1日0时0分0秒(不包括该时间点)之前的时间。 

    在time.h头文件中,我们还可以看到一些函数,它们都是以time_t为参数类型或返回值类型的函数: 

    double difftime(time_t time1, time_t time0); 
    time_t mktime(struct tm * timeptr); 
    time_t time(time_t * timer); 
    char * asctime(const struct tm * timeptr); 
    char * ctime(const time_t *timer); 

    此外,time.h还提供了两种不同的函数将日历时间(一个用time_t表示的整数)转换为我们平时看到的把年月日时分秒分开显示的时间格式tm: 

    struct tm * gmtime(const time_t *timer);                                           
    struct tm * localtime(const time_t * timer); 

    通过查阅MSDN,我们可以知道Microsoft C/C++ 7.0中时间点的值(time_t对象的值)是从1899年12月31日0时0分0秒到该时间点所经过的秒数,而其它各种版本的Microsoft C/C++和所有不同版本的Visual C++都是计算的从1970年1月1日0时0分0秒到该时间点所经过的秒数。 

    4.与日期和时间相关的函数及应用 
    在本节,我将向大家展示怎样利用time.h中声明的函数对时间进行操作。这些操作包括取当前时间、计算时间间隔、以不同的形式显示时间等内容。 

    4.1 获得日历时间 

    我们可以通过time()函数来获得日历时间(Calendar Time),其原型为: 

    time_t time(time_t * timer); 

    如果你已经声明了参数timer,你可以从参数timer返回现在的日历时间,同时也可以通过返回值返回现在的日历时间,即从一个时间点(例如:1970 年1月1日0时0分0秒)到现在此时的秒数。如果参数为空(NUL),函数将只通过返回值返回现在的日历时间,比如下面这个例子用来显示当前的日历时 间: 
    CODE:   [Copy to clipboard] 
    -------------------------------------------------------------------------------- 

    #include "time.h" 
    #include "stdio.h" 
    int main(void) 

    struct tm *ptr; 
    time_t lt; 
    lt =time(NUL); 
    printf("The Calendar Time now is %d
    ",lt); 
    return 0; 

    运行的结果与当时的时间有关,我当时运行的结果是: 

    The Calendar Time now is 1122707619 

    其中1122707619就是我运行程序时的日历时间。即从1970年1月1日0时0分0秒到此时的秒数。 

    4.2 获得日期和时间 

    这里说的日期和时间就是我们平时所说的年、月、日、时、分、秒等信息。从第2节我们已经知道这些信息都保存在一个名为tm的结构体中,那么如何将一个日历时间保存为一个tm结构的对象呢? 

    其中可以使用的函数是gmtime()和localtime(),这两个函数的原型为: 

    struct tm * gmtime(const time_t *timer);                                           
    struct tm * localtime(const time_t * timer); 

    其中gmtime()函数是将日历时间转化为世界标准时间(即格林尼治时间),并返回一个tm结构体来保存这个时间,而localtime()函数是将日 历时间转化为本地时间。比如现在用gmtime()函数获得的世界标准时间是2005年7月30日7点18分20秒,那么我用localtime()函数 在中国地区获得的本地时间会比世界标准时间晚8个小时,即2005年7月30日15点18分20秒。下面是个例子: 
    CODE:   [Copy to clipboard] 
    -------------------------------------------------------------------------------- 

    #include "time.h" 
    #include "stdio.h" 
    int main(void) 

    struct tm *local; 
    time_t t; 
    t=time(NUL); 
    local=localtime(&t); 
    printf("Local hour is: %d
    ",local->tm_hour); 
    local=gmtime(&t); 
    printf("UTC hour is: %d
    ",local->tm_hour); 
    return 0; 

    运行结果是: 

    Local hour is: 15 
    UTC hour is: 7 

    4.3 固定的时间格式 

    我们可以通过asctime()函数和ctime()函数将时间以固定的格式显示出来,两者的返回值都是char*型的字符串。返回的时间格式为: 

    星期几 月份 日期 时:分:秒 年
    \0 
    例如:Wed Jan 02 02:03:55 1980
    \0 

    其中
    是一个换行符,\0是一个空字符,表示字符串结束。下面是两个函数的原型: 

    char * asctime(const struct tm * timeptr); 
    char * ctime(const time_t *timer); 

    其中asctime()函数是通过tm结构来生成具有固定格式的保存时间信息的字符串,而ctime()是通过日历时间来生成时间字符串。这样的 话,asctime()函数只是把tm结构对象中的各个域填到时间字符串的相应位置就行了,而ctime()函数需要先参照本地的时间设置,把日历时间转 化为本地时间,然后再生成格式化后的字符串。在下面,如果t是一个非空的time_t变量的话,那么: 

    printf(ctime(&t)); 

    等价于: 

    struct tm *ptr; 
    ptr=localtime(&t); 
    printf(asctime(ptr)); 

    那么,下面这个程序的两条printf语句输出的结果就是不同的了(除非你将本地时区设为世界标准时间所在的时区): 
    CODE:   [Copy to clipboard] 
    -------------------------------------------------------------------------------- 

    #include "time.h" 
    #include "stdio.h" 
    int main(void) 

    struct tm *ptr; 
    time_t lt; 
    lt =time(NUL); 
    ptr=gmtime(<); 
    printf(asctime(ptr)); 
    printf(ctime(<)); 
    return 0; 

    运行结果: 

    Sat Jul 30 08:43:03 2005 
    Sat Jul 30 16:43:03 2005 

    4.4 自定义时间格式 

    我们可以使用strftime()函数将时间格式化为我们想要的格式。它的原型如下: 

    size_t strftime( 
       char *strDest, 
       size_t maxsize, 
       const char *format, 
       const struct tm *timeptr 
    ); 

    我们可以根据format指向字符串中格式命令把timeptr中保存的时间信息放在strDest指向的字符串中,最多向strDest中存放maxsize个字符。该函数返回向strDest指向的字符串中放置的字符数。 

    函数strftime()的操作有些类似于sprintf():识别以百分号(%)开始的格式命令集合,格式化输出结果放在一个字符串中。格式化命令说明 串strDest中各种日期和时间信息的确切表示方法。格式串中的其他字符原样放进串中。格式命令列在下面,它们是区分大小写的。 

    %a 星期几的简写 
    %A 星期几的全称 
    %b 月分的简写 
    %B 月份的全称 
    %c 标准的日期的时间串 
    %C 年份的后两位数字 
    %d 十进制表示的每月的第几天 
    %D 月/天/年 
    %e 在两字符域中,十进制表示的每月的第几天 
    %F 年-月-日 
    %g 年份的后两位数字,使用基于周的年 
    %G 年分,使用基于周的年 
    %h 简写的月份名 
    %H 24小时制的小时 
    %I 12小时制的小时 
    %j 十进制表示的每年的第几天 
    %m 十进制表示的月份 
    %M 十时制表示的分钟数 
    %n 新行符 
    %p 本地的AM或PM的等价显示 
    %r 12小时的时间 
    %R 显示小时和分钟:hh:mm 
    %S 十进制的秒数 
    %t 水平制表符 
    %T 显示时分秒:hh:mm:ss 
    %u 每周的第几天,星期一为第一天 (值从0到6,星期一为0) 
    %U 第年的第几周,把星期日做为第一天(值从0到53) 
    %V 每年的第几周,使用基于周的年 
    %w 十进制表示的星期几(值从0到6,星期天为0) 
    %W 每年的第几周,把星期一做为第一天(值从0到53) 
    %x 标准的日期串 
    %X 标准的时间串 
    %y 不带世纪的十进制年份(值从0到99) 
    %Y 带世纪部分的十进制年份 
    %z,%Z 时区名称,如果不能得到时区名称则返回空字符。 
    %% 百分号 

    如果想显示现在是几点了,并以12小时制显示,就象下面这段程序: 
    CODE:   [Copy to clipboard] 
    -------------------------------------------------------------------------------- 

    #include “time.h” 
    #include “stdio.h” 
    int main(void) 

    struct tm *ptr; 
    time_t lt; 
    char str[80]; 
    lt=time(NUL); 
    ptr=localtime(<); 
    strftime(str,100,"It is now %I %p",ptr); 
    printf(str); 
    return 0; 

    其运行结果为: 
    It is now 4PM 

    而下面的程序则显示当前的完整日期: 
    CODE:   [Copy to clipboard] 
    -------------------------------------------------------------------------------- 

    #include 
    #include 

    void main( void ) 

             struct tm *newtime; 
             char tmpbuf[128]; 
             time_t lt1; 
             time( <1 ); 
             newtime=localtime(<1); 
             strftime( tmpbuf, 128, "Today is %A, day %d of %B in the year %Y.
    ", newtime); 
             printf(tmpbuf); 

    运行结果: 

    Today is Saturday, day 30 of July in the year 2005. 

    4.5 计算持续时间的长度 

    有时候在实际应用中要计算一个事件持续的时间长度,比如计算打字速度。在第1节计时部分中,我已经用clock函数举了一个例子。Clock()函数可以精确到毫秒级。同时,我们也可以使用difftime()函数,但它只能精确到秒。该函数的定义如下: 

    double difftime(time_t time1, time_t time0); 

    虽然该函数返回的以秒计算的时间间隔是double类型的,但这并不说明该时间具有同double一样的精确度,这是由它的参数觉得的(time_t是以秒为单位计算的)。比如下面一段程序: 
    CODE:   [Copy to clipboard] 
    -------------------------------------------------------------------------------- 

    #include "time.h" 
    #include "stdio.h" 
    #include "stdlib.h" 
    int main(void) 

    time_t start,end; 
    start = time(NUL); 
    system("pause"); 
    end = time(NUL); 
    printf("The pause used %f seconds.
    ",difftime(end,start));//<- 
    system("pause"); 
    return 0; 

    运行结果为: 
    请按任意键继续. . . 
    The pause used 2.000000 seconds. 
    请按任意键继续. . . 

    可以想像,暂停的时间并不那么巧是整整2秒钟。其实,你将上面程序的带有“//<-”注释的一行用下面的一行代码替换: 

    printf("The pause used %f seconds.
    ",end-start); 

    其运行结果是一样的。 

    4.6 分解时间转化为日历时间 

    这里说的分解时间就是以年、月、日、时、分、秒等分量保存的时间结构,在C/C++中是tm结构。我们可以使用mktime()函数将用tm结构表示的时间转化为日历时间。其函数原型如下: 

    time_t mktime(struct tm * timeptr); 

    其返回值就是转化后的日历时间。这样我们就可以先制定一个分解时间,然后对这个时间进行操作了,下面的例子可以计算出1997年7月1日是星期几: 
    CODE:   [Copy to clipboard] 
    -------------------------------------------------------------------------------- 

    #include "time.h" 
    #include "stdio.h" 
    #include "stdlib.h" 
    int main(void) 

    struct tm t; 
    time_t t_of_day; 
    t.tm_year=1997-1900; 
    t.tm_mon=6; 
    t.tm_mday=1; 
    t.tm_hour=0; 
    t.tm_min=0; 
    t.tm_sec=1; 
    t.tm_isdst=0; 
    t_of_day=mktime(&t); 
    printf(ctime(&t_of_day)); 
    return 0; 

    运行结果: 

    Tue Jul 01 00:00:01 1997 

    现在注意了,有了mktime()函数,是不是我们可以操作现在之前的任何时间呢?你可以通过这种办法算出1945年8月15号是星期几吗?答案是否定的。因为这个时间在1970年1月1日之前,所以在大多数编译器中,这样的程序虽然可以编译通过,但运行时会异常终止。 

    5.总结 

    本文介绍了标准C/C++中的有关日期和时间的概念,并通过各种实例讲述了这些函数和数据结构的使用方法。笔者认为,和时间相关的一些概念是相当重要的,理解这些概念是理解各种时间格式的转换的基础,更是应用这些函数和数据结构的基础。 

    参考文献 

    [1] 标准C++程序设计教程,电子工业出版社,2003。 
    [2] MSDN Library, Microsoft Corporation,2003。

    展开全文
  • 更为具体一点来说可能是希望以某种格式显示时间,显示某个时区的时间,获取一个星期之后的时间,获取本星期开始的时间戳,将某种格式的时间转换成另一种等等。1. 显示当前时间使用date函数,格式为date(format[, ...

    日期时间在程序语言中通常用于显示以及条件限制。更为具体一点来说可能是希望以某种格式显示时间,显示某个时区的时间,获取一个星期之后的时间,获取本星期开始的时间戳,将某种格式的时间转换成另一种等等。

    1. 显示当前时间

    使用date函数,格式为date(format[, timestamp]),它接受两个参数,第一个参数为时间格式字符串,第二个参数为时间戳,时间戳可选,如果不填的话则是当前时间的时间戳。

    a55c455abb5888e1e26daa3151263208.png

    像这样就可以打出当前的年月日时分秒来了,当然根据格式字符串的不同还可以打出其他格式的时间:

    7895a433382fd79319976f815918d3bf.png

    解释一下上面所用到的格式字符:

    Y 完整年份,4位数字

    m 有前导0的月份

    d 月中的第几天,有前导0

    H 24小时制的小时,有前导0

    i 分钟,有前导0

    s 秒,有前导0

    l 星期几的完整英文(注意是小写的L,不是大写的i)

    S 每月天数的后缀(可能是st, nd, rd, th)

    F 月份的完整英文

    h 12小时制的小时,有前导0

    A 上午或下午(AM或PM)

    这只是列举了其中的一部分,更为完整的格式字符可以去查阅官方手册。

    2. 显示某个时区的世界

    比如通过设置时区,我们可以获得美国的时间:

    233792781b74e085ba1909a2392a0909.png

    上面就是美国纽约的世界,时区要求的字符串可以查阅php文档,如果不合法将会产生一条警告,同时时区也不会设置成功,而是使用默认的时区。

    3. 计算的时间

    比如本周开始的时间,本月开始的时间,一个星期之后的时间等,可以使用strtotime函数来帮我们完成这一点。

    strtotime(time[, now = time()]) 可以将任何描述时间日期的字符串转换成unix时间戳,第一个参数是描述字符串,第二个参数是用来计算的时间戳(默认为当前时间戳)。看描述就知道是一个很灵活的函数,但要注意它毕竟这是一个函数,不会智能到“任何”描述时间的字符串它都能理解,还是需要特定格式的——特别是咱们中国地区,就不要指望它能理解“2018年12月25日”是什么意思了。但是它仍然很强大,前面描述的功能都可以做到。

    5348021c26a73d3f468864d74ca152bf.png

    4. 根据具体值创建时间

    如果你知道某个时间的年、月、日、时、分、秒,想用他们来创建一个时间,可以选择用他们拼接成一个时间字符串然后用strtotime来解析,或者在这种情况下也可以使用更为稳妥的方法:mktime。

    mktime(hour, minute, second, month, day, year) 需要注意的是参数的顺序和我们的习惯不太相同,为:时 分 秒 月 日 年

    85835e370358e7269056fcdcc4c241e9.png

    5. 对象类型的时间操作

    php也支持对象类型的时间操作

    93054a0978ee7f14d024458789ca33aa.png

    与过程化的风格不同,不过可以实现的功能其实还是比较类似的。

    以上就是php关于日期时间的操作的详细内容,更多请关注php交流群:点击加群

    展开全文
  • C/C++中怎样获取日期和时间摘要: 本文从介绍基础概念入手,探讨了在C/C++中对日期和时间操作所用到的数据结构函数,并对计时、时间的获取、时间的计算和显示格式等方面进行了阐述。本文还通过大量的实例向你展示...

    C/C++中怎样获取日期和时间摘要: 
    本文从介绍基础概念入手,探讨了在C/C++中对日期和时间操作所用到的数据结构和函数,并对计时、时间的获取、时间的计算和显示格式等方面进行了阐述。本文还通过大量的实例向你展示了time.h头文件中声明的各种函数和数据结构的详细使用方法。 

    关键字:UTC(世界标准时间),Calendar Time(日历时间),epoch(时间点),clock tick(时钟计时单元) 

    1.概念 
    在C/C++中,对字符串的操作有很多值得注意的问题,同样,C/C++对时间的操作也有许多值得大家注意的地方。最近,在技术群中有很多网友也多次问到 过C++语言中对时间的操作、获取和显示等等的问题。下面,在这篇文章中,笔者将主要介绍在C/C++中时间和日期的使用方法. 

    通过学习许多C/C++库,你可以有很多操作、使用时间的方法。但在这之前你需要了解一些“时间”和“日期”的概念,主要有以下几个: 

    Coordinated Universal Time(UTC):协调世界时,又称为世界标准时间,也就是大家所熟知的格林威治标准时间(Greenwich Mean Time,GMT)。比如,中国内地的时间与UTC的时差为+8,也就是UTC+8。美国是UTC-5。 

    Calendar Time:日历时间,是用“从一个标准时间点到此时的时间经过的秒数”来表示的时间。这个标准时间点对不同的编译器来说会有所不同,但对一个编译系统来 说,这个标准时间点是不变的,该编译系统中的时间对应的日历时间都通过该标准时间点来衡量,所以可以说日历时间是“相对时间”,但是无论你在哪一个时区, 在同一时刻对同一个标准时间点来说,日历时间都是一样的。 

    epoch:时间点。时间点在标准C/C++中是一个整数,它用此时的时间和标准时间点相差的秒数(即日历时间)来表示。 

    clock tick:时钟计时单元(而不把它叫做时钟滴答次数),一个时钟计时单元的时间长短是由CPU控制的。一个clock tick不是CPU的一个时钟周期,而是C/C++的一个基本计时单位。 

    我们可以使用ANSI标准库中的time.h头文件。这个头文件中定义的时间和日期所使用的方法,无论是在结构定义,还是命名,都具有明显的C语言风格。下面,我将说明在C/C++中怎样使用日期的时间功能。 

    2. 计时 

    C/C++中的计时函数是clock(),而与其相关的数据类型是clock_t。在MSDN中,查得对clock函数定义如下: 

    clock_t clock( void ); 

    这个函数返回从“开启这个程序进程”到“程序中调用clock()函数”时之间的CPU时钟计时单元(clock tick)数,在MSDN中称之为挂钟时间(wal-clock)。其中clock_t是用来保存时间的数据类型,在time.h文件中,我们可以找到对 它的定义: 

    #ifndef _CLOCK_T_DEFINED 
    typedef long clock_t; 
    #define _CLOCK_T_DEFINED 
    #endif 

    很明显,clock_t是一个长整形数。在time.h文件中,还定义了一个常量CLOCKS_PER_SEC,它用来表示一秒钟会有多少个时钟计时单元,其定义如下: 

    #define CLOCKS_PER_SEC ((clock_t)1000) 

    可以看到每过千分之一秒(1毫秒),调用clock()函数返回的值就加1。下面举个例子,你可以使用公式clock()/CLOCKS_PER_SEC来计算一个进程自身的运行时间: 

    void elapsed_time() 

    printf("Elapsed time:%u secs.
    ",clock()/CLOCKS_PER_SEC); 


    当然,你也可以用clock函数来计算你的机器运行一个循环或者处理其它事件到底花了多少时间: 
    CODE:   [Copy to clipboard] 
    -------------------------------------------------------------------------------- 

    #include “stdio.h” 
    #include “stdlib.h” 
    #include “time.h” 

    int main( void ) 

       long     i = 10000000L; 
       clock_t start, finish; 
       double   duration; 
       /* 测量一个事件持续的时间*/ 
       printf( "Time to do %ld empty loops is ", i ); 
       start = clock(); 
       while( i-- )       ; 
       finish = clock(); 
       duration = (double)(finish - start) / CLOCKS_PER_SEC; 
       printf( "%f seconds
    ", duration ); 
       system("pause"); 

    在笔者的机器上,运行结果如下: 

    Time to do 10000000 empty loops is 0.03000 seconds 

    上面我们看到时钟计时单元的长度为1毫秒,那么计时的精度也为1毫秒,那么我们可不可以通过改变CLOCKS_PER_SEC的定义,通过把它定义的大一些,从而使计时精度更高呢?通过尝试,你会发现这样是不行的。在标准C/C++中,最小的计时单位是一毫秒。 

    3.与日期和时间相关的数据结构 

    在标准C/C++中,我们可通过tm结构来获得日期和时间,tm结构在time.h中的定义如下: 
    CODE:   [Copy to clipboard] 
    -------------------------------------------------------------------------------- 

    #ifndef _TM_DEFINED 
    struct tm { 
             int tm_sec;     /* 秒 ? 取值区间为[0,59] */ 
             int tm_min;     /* 分 - 取值区间为[0,59] */ 
             int tm_hour;     /* 时 - 取值区间为[0,23] */ 
             int tm_mday;     /* 一个月中的日期 - 取值区间为[1,31] */ 
             int tm_mon;     /* 月份(从一月开始,0代表一月) - 取值区间为[0,11] */ 
             int tm_year;     /* 年份,其值等于实际年份减去1900 */ 
             int tm_wday;     /* 星期 ? 取值区间为[0,6],其中0代表星期天,1代表星期一,以此类推 */ 
             int tm_yday;     /* 从每年的1月1日开始的天数 ? 取值区间为[0,365],其中0代表1月1日,1代表1月2日,以此类推 */
             int tm_isdst;   /* 夏令时标识符,实行夏令时的时候,tm_isdst为正。不实行夏令时的进候,tm_isdst为0;不了解情况时,tm_isdst()为负。*/ 
             }; 
    #define _TM_DEFINED 
    #endif 
    ANSI C标准称使用tm结构的这种时间表示为分解时间(broken-down time)。 

    而日历时间(Calendar Time)是通过time_t数据类型来表示的,用time_t表示的时间(日历时间)是从一个时间点(例如:1970年1月1日0时0分0秒)到此时的秒数。在time.h中,我们也可以看到time_t是一个长整型数: 

    #ifndef _TIME_T_DEFINED 
    typedef long time_t;         /* 时间值 */ 
    #define _TIME_T_DEFINED       /* 避免重复定义 time_t */ 
    #endif 

    大家可能会产生疑问:既然time_t实际上是长整型,到未来的某一天,从一个时间点(一般是1970年1月1日0时0分0秒)到那时的秒数(即日历时 间)超出了长整形所能表示的数的范围怎么办?对time_t数据类型的值来说,它所表示的时间不能晚于2038年1月18日19时14分07秒。为了能够 表示更久远的时间,一些编译器厂商引入了64位甚至更长的整形数来保存日历时间。比如微软在Visual C++中采用了__time64_t数据类型来保存日历时间,并通过_time64()函数来获得日历时间(而不是通过使用32位字的time()函 数),这样就可以通过该数据类型保存3001年1月1日0时0分0秒(不包括该时间点)之前的时间。 

    在time.h头文件中,我们还可以看到一些函数,它们都是以time_t为参数类型或返回值类型的函数: 

    double difftime(time_t time1, time_t time0); 
    time_t mktime(struct tm * timeptr); 
    time_t time(time_t * timer); 
    char * asctime(const struct tm * timeptr); 
    char * ctime(const time_t *timer); 

    此外,time.h还提供了两种不同的函数将日历时间(一个用time_t表示的整数)转换为我们平时看到的把年月日时分秒分开显示的时间格式tm: 

    struct tm * gmtime(const time_t *timer);                                           
    struct tm * localtime(const time_t * timer); 

    通过查阅MSDN,我们可以知道Microsoft C/C++ 7.0中时间点的值(time_t对象的值)是从1899年12月31日0时0分0秒到该时间点所经过的秒数,而其它各种版本的Microsoft C/C++和所有不同版本的Visual C++都是计算的从1970年1月1日0时0分0秒到该时间点所经过的秒数。 

    4.与日期和时间相关的函数及应用 
    在本节,我将向大家展示怎样利用time.h中声明的函数对时间进行操作。这些操作包括取当前时间、计算时间间隔、以不同的形式显示时间等内容。 

    4.1 获得日历时间 

    我们可以通过time()函数来获得日历时间(Calendar Time),其原型为: 

    time_t time(time_t * timer); 

    如果你已经声明了参数timer,你可以从参数timer返回现在的日历时间,同时也可以通过返回值返回现在的日历时间,即从一个时间点(例如:1970 年1月1日0时0分0秒)到现在此时的秒数。如果参数为空(NUL),函数将只通过返回值返回现在的日历时间,比如下面这个例子用来显示当前的日历时 间: 
    CODE:   [Copy to clipboard] 
    -------------------------------------------------------------------------------- 

    #include "time.h" 
    #include "stdio.h" 
    int main(void) 

    struct tm *ptr; 
    time_t lt; 
    lt =time(NUL); 
    printf("The Calendar Time now is %d
    ",lt); 
    return 0; 

    运行的结果与当时的时间有关,我当时运行的结果是: 

    The Calendar Time now is 1122707619 

    其中1122707619就是我运行程序时的日历时间。即从1970年1月1日0时0分0秒到此时的秒数。 

    4.2 获得日期和时间 

    这里说的日期和时间就是我们平时所说的年、月、日、时、分、秒等信息。从第2节我们已经知道这些信息都保存在一个名为tm的结构体中,那么如何将一个日历时间保存为一个tm结构的对象呢? 

    其中可以使用的函数是gmtime()和localtime(),这两个函数的原型为: 

    struct tm * gmtime(const time_t *timer);                                           
    struct tm * localtime(const time_t * timer); 

    其中gmtime()函数是将日历时间转化为世界标准时间(即格林尼治时间),并返回一个tm结构体来保存这个时间,而localtime()函数是将日 历时间转化为本地时间。比如现在用gmtime()函数获得的世界标准时间是2005年7月30日7点18分20秒,那么我用localtime()函数 在中国地区获得的本地时间会比世界标准时间晚8个小时,即2005年7月30日15点18分20秒。下面是个例子: 
    CODE:   [Copy to clipboard] 
    -------------------------------------------------------------------------------- 

    #include "time.h" 
    #include "stdio.h" 
    int main(void) 

    struct tm *local; 
    time_t t; 
    t=time(NUL); 
    local=localtime(&t); 
    printf("Local hour is: %d
    ",local->tm_hour); 
    local=gmtime(&t); 
    printf("UTC hour is: %d
    ",local->tm_hour); 
    return 0; 

    运行结果是: 

    Local hour is: 15 
    UTC hour is: 7 

    4.3 固定的时间格式 

    我们可以通过asctime()函数和ctime()函数将时间以固定的格式显示出来,两者的返回值都是char*型的字符串。返回的时间格式为: 

    星期几 月份 日期 时:分:秒 年
    \0 
    例如:Wed Jan 02 02:03:55 1980
    \0 

    其中
    是一个换行符,\0是一个空字符,表示字符串结束。下面是两个函数的原型: 

    char * asctime(const struct tm * timeptr); 
    char * ctime(const time_t *timer); 

    其中asctime()函数是通过tm结构来生成具有固定格式的保存时间信息的字符串,而ctime()是通过日历时间来生成时间字符串。这样的 话,asctime()函数只是把tm结构对象中的各个域填到时间字符串的相应位置就行了,而ctime()函数需要先参照本地的时间设置,把日历时间转 化为本地时间,然后再生成格式化后的字符串。在下面,如果t是一个非空的time_t变量的话,那么: 

    printf(ctime(&t)); 

    等价于: 

    struct tm *ptr; 
    ptr=localtime(&t); 
    printf(asctime(ptr)); 

    那么,下面这个程序的两条printf语句输出的结果就是不同的了(除非你将本地时区设为世界标准时间所在的时区): 
    CODE:   [Copy to clipboard] 
    -------------------------------------------------------------------------------- 

    #include "time.h" 
    #include "stdio.h" 
    int main(void) 

    struct tm *ptr; 
    time_t lt; 
    lt =time(NUL); 
    ptr=gmtime(<); 
    printf(asctime(ptr)); 
    printf(ctime(<)); 
    return 0; 

    运行结果: 

    Sat Jul 30 08:43:03 2005 
    Sat Jul 30 16:43:03 2005 

    4.4 自定义时间格式 

    我们可以使用strftime()函数将时间格式化为我们想要的格式。它的原型如下: 

    size_t strftime( 
       char *strDest, 
       size_t maxsize, 
       const char *format, 
       const struct tm *timeptr 
    ); 

    我们可以根据format指向字符串中格式命令把timeptr中保存的时间信息放在strDest指向的字符串中,最多向strDest中存放maxsize个字符。该函数返回向strDest指向的字符串中放置的字符数。 

    函数strftime()的操作有些类似于sprintf():识别以百分号(%)开始的格式命令集合,格式化输出结果放在一个字符串中。格式化命令说明 串strDest中各种日期和时间信息的确切表示方法。格式串中的其他字符原样放进串中。格式命令列在下面,它们是区分大小写的。 

    %a 星期几的简写 
    %A 星期几的全称 
    %b 月分的简写 
    %B 月份的全称 
    %c 标准的日期的时间串 
    %C 年份的后两位数字 
    %d 十进制表示的每月的第几天 
    %D 月/天/年 
    %e 在两字符域中,十进制表示的每月的第几天 
    %F 年-月-日 
    %g 年份的后两位数字,使用基于周的年 
    %G 年分,使用基于周的年 
    %h 简写的月份名 
    %H 24小时制的小时 
    %I 12小时制的小时 
    %j 十进制表示的每年的第几天 
    %m 十进制表示的月份 
    %M 十时制表示的分钟数 
    %n 新行符 
    %p 本地的AM或PM的等价显示 
    %r 12小时的时间 
    %R 显示小时和分钟:hh:mm 
    %S 十进制的秒数 
    %t 水平制表符 
    %T 显示时分秒:hh:mm:ss 
    %u 每周的第几天,星期一为第一天 (值从0到6,星期一为0) 
    %U 第年的第几周,把星期日做为第一天(值从0到53) 
    %V 每年的第几周,使用基于周的年 
    %w 十进制表示的星期几(值从0到6,星期天为0) 
    %W 每年的第几周,把星期一做为第一天(值从0到53) 
    %x 标准的日期串 
    %X 标准的时间串 
    %y 不带世纪的十进制年份(值从0到99) 
    %Y 带世纪部分的十进制年份 
    %z,%Z 时区名称,如果不能得到时区名称则返回空字符。 
    %% 百分号 

    如果想显示现在是几点了,并以12小时制显示,就象下面这段程序: 
    CODE:   [Copy to clipboard] 
    -------------------------------------------------------------------------------- 

    #include “time.h” 
    #include “stdio.h” 
    int main(void) 

    struct tm *ptr; 
    time_t lt; 
    char str[80]; 
    lt=time(NUL); 
    ptr=localtime(<); 
    strftime(str,100,"It is now %I %p",ptr); 
    printf(str); 
    return 0; 

    其运行结果为: 
    It is now 4PM 

    而下面的程序则显示当前的完整日期: 
    CODE:   [Copy to clipboard] 
    -------------------------------------------------------------------------------- 

    #include 
    #include 

    void main( void ) 

             struct tm *newtime; 
             char tmpbuf[128]; 
             time_t lt1; 
             time( <1 ); 
             newtime=localtime(<1); 
             strftime( tmpbuf, 128, "Today is %A, day %d of %B in the year %Y.
    ", newtime); 
             printf(tmpbuf); 

    运行结果: 

    Today is Saturday, day 30 of July in the year 2005. 

    4.5 计算持续时间的长度 

    有时候在实际应用中要计算一个事件持续的时间长度,比如计算打字速度。在第1节计时部分中,我已经用clock函数举了一个例子。Clock()函数可以精确到毫秒级。同时,我们也可以使用difftime()函数,但它只能精确到秒。该函数的定义如下: 

    double difftime(time_t time1, time_t time0); 

    虽然该函数返回的以秒计算的时间间隔是double类型的,但这并不说明该时间具有同double一样的精确度,这是由它的参数觉得的(time_t是以秒为单位计算的)。比如下面一段程序: 
    CODE:   [Copy to clipboard] 
    -------------------------------------------------------------------------------- 

    #include "time.h" 
    #include "stdio.h" 
    #include "stdlib.h" 
    int main(void) 

    time_t start,end; 
    start = time(NUL); 
    system("pause"); 
    end = time(NUL); 
    printf("The pause used %f seconds.
    ",difftime(end,start));//<- 
    system("pause"); 
    return 0; 

    运行结果为: 
    请按任意键继续. . . 
    The pause used 2.000000 seconds. 
    请按任意键继续. . . 

    可以想像,暂停的时间并不那么巧是整整2秒钟。其实,你将上面程序的带有“//<-”注释的一行用下面的一行代码替换: 

    printf("The pause used %f seconds.
    ",end-start); 

    其运行结果是一样的。 

    4.6 分解时间转化为日历时间 

    这里说的分解时间就是以年、月、日、时、分、秒等分量保存的时间结构,在C/C++中是tm结构。我们可以使用mktime()函数将用tm结构表示的时间转化为日历时间。其函数原型如下: 

    time_t mktime(struct tm * timeptr); 

    其返回值就是转化后的日历时间。这样我们就可以先制定一个分解时间,然后对这个时间进行操作了,下面的例子可以计算出1997年7月1日是星期几: 
    CODE:   [Copy to clipboard] 
    -------------------------------------------------------------------------------- 

    #include "time.h" 
    #include "stdio.h" 
    #include "stdlib.h" 
    int main(void) 

    struct tm t; 
    time_t t_of_day; 
    t.tm_year=1997-1900; 
    t.tm_mon=6; 
    t.tm_mday=1; 
    t.tm_hour=0; 
    t.tm_min=0; 
    t.tm_sec=1; 
    t.tm_isdst=0; 
    t_of_day=mktime(&t); 
    printf(ctime(&t_of_day)); 
    return 0; 

    运行结果: 

    Tue Jul 01 00:00:01 1997 

    现在注意了,有了mktime()函数,是不是我们可以操作现在之前的任何时间呢?你可以通过这种办法算出1945年8月15号是星期几吗?答案是否定的。因为这个时间在1970年1月1日之前,所以在大多数编译器中,这样的程序虽然可以编译通过,但运行时会异常终止。 

    5.总结 

    本文介绍了标准C/C++中的有关日期和时间的概念,并通过各种实例讲述了这些函数和数据结构的使用方法。笔者认为,和时间相关的一些概念是相当重要的,理解这些概念是理解各种时间格式的转换的基础,更是应用这些函数和数据结构的基础。 

    参考文献 

    [1] 标准C++程序设计教程,电子工业出版社,2003。 
    [2] MSDN Library, Microsoft Corporation,2003。

     

    ----------------

    转自 http://hi.baidu.com/im_ds/blog/item/f5b10f39177e1df93a87ce88.html

    转载于:https://www.cnblogs.com/shrimp-can/p/6721970.html

    展开全文
  • C/C++中怎样获取日期和时间(2007-3-30 7:29:00) 【收藏】 【评论】 【打印】 【关闭】 标签:日期时间timeclock 摘要: 本文从介绍基础概念入手,探讨了在C/C++中对日期和时间操作所用到的数据结构函数,并对...
  • 有多种方法可以使用Java编程语言获取当前日期和时间。 这里我们将讨论使用java.util.Datejava.util.Calendar类的两种方法。使用java.util.Date类只需创建一个新的Date()对象即可获得当前的日期和时间。 使用以下...
  • 找到并启动我们的Microsoft Excel软件,如图 ...在excel中,我们先演示如何快速输入当前“日期”,先在一个...好了,”日期“的演示好了,如果想设置”日期显示格式,自己去设置,如图 ...
  • A1显示了当前日期,B1显示了当前日期和时间,而这两个单元格的公式都是一样的:=TODAY()那为什么显示不一样呢,只因为B1设置了单元格格式,如下图:在B1单元格,因为没有指定具体的时间,EXCEL就默认为: 0:...
  • 时间日期

    2007-03-29 11:12:00
    概要 不管你是处理财务交易还是计划着下一步的行动,你都要知道怎样在Java中建立,使用和显示日期。这需要你简单的查阅一下相应类的API参考:一个日期可以创建3个相关类的对象。这篇文章告诉你你想要知道的内容。 ...
  • win10系统的电脑显示时间默认的是自动网络校时,也就是电脑的时间跟网络时间同步,那么win10系统怎样手动更改电脑时间呢? 点击电脑左下方的win图标,找到菜单里的【设置】 点击菜单里的【设置】,弹出设置窗口...
  • 下表显示了typeexpr参数怎样被关联:type值含义期望的expr格式SECOND秒SECONDSMINUTE分钟MINUTESHOUR时间HOURSDAY天DAYSMONTH月MONTHSYEAR年YEARSMINUTE_SECOND分钟秒"MINUTES:SECONDS"HOUR_MINUTE小时分钟...
  • 下表显示了typeexpr参数怎样被关联:type值含义期望的expr格式SECOND秒SECONDSMINUTE分钟MINUTESHOUR时间HOURSDAY天DAYSMONTH月MONTHSYEAR年YEARSMINUTE_SECOND分钟秒"MINUTES:SECONDS"HOUR_MINUTE小时分钟...
  • 微软的系统桌面右下角一般默认显示的都是日期,既不影响视觉,也方便查看...1、找到控制面板打开,点击“时钟、语言和区域”下的“更改日期时间和数字格式”; 2、点击进去后,找到格式栏右下角的“其他设置”...
  • 展开全部添加桌面小组件即可copy。1、时间组件:2113把手机调整到主页5261屏幕背景,然后...然后添加时间部件和日期部件,添加成功。时间部件添加成功之后,根据自己的需要如果还需要添加其他部件的。2、天气组件...
  • 但页脚中的日期时间会随着这个参数显示为相应的中或英文。 如下图,将Test_zh_CN.properties移到第一位,会显示中文"测试视图"。 ![图片说明](https://img-ask.csdn.net/upload/201605/06/1462507610_783220.jpg)...
  • 时间格式,日期格式 小例子

    千次阅读 2008-10-17 11:04:00
    计算Java日期--学习怎样创建使用日期 概要不管你是处理财务交易还是计划着下一步的行动,你都要知道怎样在Java中建立,使用和显示日期。这需要你简单的查阅一下相应类的API参考:一个日期可以创建3个相关类的...
  • 下表显示了typeexpr参数怎样被关联:type值含义期望的expr格式SECOND秒SECONDS MINUTE分钟MINUTES HOUR时间HOURS DAY天DAYS MONTH月MONTHS YEAR年YEARS MINUTE_SECOND分钟秒"MINUTE...
  • 用plsql怎样将oracle中的date类型的时间如何处理成只显示时分秒的格式?

空空如也

空空如也

1 2 3 4 5 ... 14
收藏数 267
精华内容 106
关键字:

怎样显示时间和日期