C语言中如何调用本地时间
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言中如何调用本地时间相关的知识,希望对你有一定的参考价值。
我要的是调用本地时间的函数格式 就是能在指定的区域内显示几点几分“比如显示的效果是20:58”,,,,比如绘画文字用的是drawtxt,,谁知道时间用什么调用啊?求解
#include<stdio.h>#include<stdlib.h>
#include<time.h>
void main()
time_t rawtime; //time_t时间类
struct tm *timeinfo;
time(&rawtime); //获取时间
timeinfo=localtime(&rawtime); //转为当地时间,tm 时间结构
printf("当前系统时间为:%s\\n",asctime(timeinfo));//asctime() 转为标准ASCII时间格式
system("pause");
printf("tsystem(\\"paus\\")\\n");//需要输入转意字符\\
return;
参考技术A void Time() //系统时间
printf("\n\n************* 欢迎进入*********系统 *************\n");
printf("\n\n 版本所属: ****** \n");
printf("\n\n *****\n\n ");
CString sDate;
CString *p;
p = &sDate;
while(1)
CTime Now=CTime::GetCurrentTime();
*p=Now.Format("%Y年 %m月 %d日 %H时 %M分 %S秒");
printf("%s", *p);
Sleep(1000);
for(int i=1; i<=strlen(*p); i++)
printf("\b"); //
printf(" ");
printf("\b");
printf("\n *******\n");
当运行之后,虽然实现了 实现动态显示当前系统时间, 但是无法继续执行 Time函数后面的程序了,即无法继续执行下面摇奖程序了。
如果是使用MFC来做,那么这种问题是不存在的,直接使用C语言,运行于DOS窗口。 参考技术B 下面这个就是一个C语言获取当前系统时间,并输出显示的例子。还有一些其他的说明。希望对你有帮助.
#include <stdio.h>#include <time.h> void main ()time_t rawtime;struct tm * timeinfo;time ( &rawtime );timeinfo = localtime ( &rawtime );printf ( "\007The current date/time is: %s", asctime (timeinfo) ); exit(0);=================#include <time.h> -- 必须的时间函数头文件time_t -- 时间类型(time.h 定义)struct tm -- 时间结构,time.h 定义如下: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; time ( &rawtime ); -- 获取时间,以秒计,从1970年1月一日起算,存于rawtimelocaltime ( &rawtime ); -- 转为当地时间,tm 时间结构asctime ()-- 转为标准ASCII时间格式:星期 月 日 时:分:秒 年=========================================你要的格式可这样输出: printf ( "%4d-%02d-%02d %02d:%02d:%02d\n",1900+timeinfo->tm_year, 1+timeinfo->tm_mon,timeinfo->tm_mday,timeinfo->tm_hour,timeinfo->tm_min,timeinfo->tm_sec);就是直接打印tm,tm_year 从1900年计算,所以要加1900,月tm_mon,从0计算,所以要加1其它你一目了然啦。 参考技术C #include<time.h>
#include<stdio.h>
#include<dos.h>
int main()
time_t timer;
struct tm *tblock;
timer = time(NULL);
tblock = localtime(&timer);
printf("Local time is: %s", asctime(tblock));
return 0;
详情参考time.h 参考技术D 你可以用time函数
即system("time /t")就可以了
Linux上从Java程序中调用C函数
原则上来说,“100%纯Java”的解决方法是最好的,但有些情况下必须使用本地方法。特别是在以下三种情况:
- 需要访问Java平台无法访问的系统特性和设备;
- 通过基准测试,发现Java代码比其他语言编写的等价代码慢得多;
- 其他语言编写的代码已经经过大量测试和调试,并且知道如何将其导出到所有的目标平台上。
Java平台有一个用于和本地C、C++代码进行互操作的API,称为Java本地接口(JNI)。下面将举例讨论Linux平台下的JNI编程。
1. 创建java类文件
创建一个nativeTest包,在包下新建HelloNative.java文件。
1 package nativeTest; 2 3 /** 4 * Created by jiax on 2016/12/30. 5 */ 6 public class HelloNative { 7 // 静态初始化代码块,保证虚拟机在第一次使用该类时就会装载库 8 static { 9 System.loadLibrary( "HelloNative" ); 10 } 11 12 // native 关键字表示本地方法,提醒编译器该方法将在外部定义 13 public static native void greeting(); 14 15 // 测试greeting()函数 16 public static void main(String[] args) { 17 greeting(); 18 } 19 }
2. 生成.h头文件
使用以下命令生成一个C的头文件,nativeTest_HelloNative.h
1 javac HelloNative.java 2 cd .. 3 javah nativeTest.HelloNative
生成的nativeTest_HelloNative.h如下:
1 /* DO NOT EDIT THIS FILE - it is machine generated */ 2 #include <jni.h> 3 /* Header for class nativeTest_HelloNative */ 4 5 #ifndef _Included_nativeTest_HelloNative 6 #define _Included_nativeTest_HelloNative 7 #ifdef __cplusplus 8 extern "C" { 9 #endif 10 /* 11 * Class: nativeTest_HelloNative 12 * Method: greeting 13 * Signature: ()V 14 */ 15 JNIEXPORT void JNICALL Java_nativeTest_HelloNative_greeting 16 (JNIEnv *, jclass); 17 18 #ifdef __cplusplus 19 } 20 #endif 21 #endif
这个文件是在nativeTest文件夹外生成的,需要拖到nativeTest文件夹里面。
3. 创建.c文件
新建一个HelloNative.c文件,写出greeting()函数的实现代码。
1 #include <stdio.h> 2 #include "nativeTest_HelloNative.h" 3 4 JNIEXPORT void JNICALL Java_nativeTest_HelloNative_greeting(JNIEnv *env, jobject c1) { 5 printf("Hello Native!!\\n"); 6 }
4. 编译一个动态链接库
使用Linux下的gcc编译器,命令如下:
gcc -fPIC -I $JAVA_HOME/include -I $JAVA_HOME/include/linux -shared -o libHelloNative.so HelloNative.c
生成libMyNative.so文件,此时整个nativeTest目录文件结构如下:
5. 运行测试
输入如下命令运行HelloNative.class文件。
java nativeTest.HelloNative
如果出现如下错误:
则需要把libHelloNative.so所在文件夹加入java.library.path,使用命令:
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:..../nativeTest
最终结果如下。
6 总结
总的来说,将一个本地方法链接到Java程序中需要经过以下5个步骤:
- 在Java类中声明一个本地方法;
- 运行javah以获得包含该方法的C声明的头文件;
- 用C实现该本地方法;
- 将代码置于共享类库中;
- 在Java程序中加载该类库。
附录——本文中用到的工具版本
JDK——1.8.0_111
gcc——4.8.5
以上是关于C语言中如何调用本地时间的主要内容,如果未能解决你的问题,请参考以下文章