请问在C语言里怎么获取当前时间和日期(精确到毫秒)?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了请问在C语言里怎么获取当前时间和日期(精确到毫秒)?相关的知识,希望对你有一定的参考价值。

先申明下,这个是我转百度知道的,经常BAIDU一下,就OK了
#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月一日起算,存于rawtime
localtime ( &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
其它你一目了然啦。
参考技术A #include <windows.h>

int main()


SYSTEMTIME lpsystime;
GetLocalTime(&lpsystime);
printf("%u:%u:%u:%u:%u:%u:%u:%u\n",lpsystime.wYear,lpsystime.wMonth,
lpsystime.wDayOfWeek,lpsystime.wDay,lpsystime.wHour,lpsystime.wMinute,
lpsystime.wSecond,lpsystime.wMilliseconds);
getchar();
return 0;
参考技术B clock_t t1,t1;
t1=clock();
..
t2=clock();
(t2-t1)/18.2的结果是秒,不过这是小数,可以得到毫秒级
参考技术C 你试试下面的程序:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int main()

clock_t start, finish;

double elapsed_time;

start=clock();
//do sonething ...
finish=clock();

elapsed_time = finish-start;


我在VC++ 6.0下运行,可以得到以毫秒为单位的计时

java中想获取前一天的开始和结束的两个毫秒数,请问分别怎样获取???????

就是我想查询前一天的数据,前一天是一个时间段啊,所以想获取前一天开始跟结束两个时间点的毫秒数,不是返回前台,是用来作为条件查询的

方法一:
Date date=new Date();
String ss= ""+date.getTime();
Calendar c = Calendar.getInstance();
long l = c.getTimeInMillis();

方法二:
Date dt= new Date();
Long time= dt.getTime();
Long time2=System.currentTimeMillis();

这里提供了两种方式获取时间,但是如果想获取前一天的时间,用日历类实现即可。追问

不行啊。我是在做一个数据统计,需要在后台计算出前一天的时间段,然后操作数据返回页面

追答

我具体写了一下如何改变日期,希望有用。

public class Test02 
public static void main(String args[]) 
Calendar c = Calendar.getInstance();
System.out.println("昨天是:"+c.getTime());
//System.out.println("今天是:"+c.get(Calendar.YEAR)+"年"+c.get(Calendar.MONTH+1)+"月"+c.get(Calendar.DAY_OF_YEAR)+"日");
c.add(Calendar.DAY_OF_YEAR, -1);
System.out.println("昨天是:"+c.getTime());
//System.out.println("今天是:"+c.get(Calendar.YEAR)+"年"+c.get(Calendar.MONTH+1)+"月"+c.get(Calendar.DAY_OF_YEAR)+"日");
long time1 = c.getTimeInMillis();
long randtime=(long)(Math.random()*(long)Math.pow(10, 6));
long time2 = c.getTimeInMillis()+randtime;
System.out.println(time1 + "," + time2);

 其中long randtime=(long)(Math.random()*(long)Math.pow(10, 6));是随机产生的一个值,如果你是一天中的时间段,是不是用这个值可以控制时间段的长度,知道开始时间和时间段长度就可以知道结束时间。

参考技术A 如果你要是做数据库查询条件的话,就可以直接用写一个自定义函数来获得当前日期的最大和最小时间:
CREATE FUNCTION f_GetThisDayBeginTime
(
@datetime datetime
)
RETURNS datetime
AS
BEGIN
RETURN convert(datetime,CONVERT(varchar(10),@datetime,120))
END

CREATE FUNCTION [dbo].[f_GetThisDayEndTime]
(
@datetime datetime
)
RETURNS datetime
AS
BEGIN
SET @datetime=CONVERT(VARCHAR(10),@datetime,120)+' 23:59:59.999'
RETURN(@datetime)
END

如果在java里面做的话:
Calendar cal1 = Calendar.getInstance();
cal1.set(2000, 7, 1, 0, 0, 0);
cal2.set(Calendar.MILLISECOND, 0);

Calendar cal1 = Calendar.getInstance();
cal1.set(2000, 7, 1, 23, 59, 59);
cal2.set(Calendar.MILLISECOND, 999);
参考技术B 问楼主,主要想实现的功能是什么?这两个毫秒数返回到前台是没有意义的啊,你是想从数据库里读取前一天的所有数据嘛?追问

就是我想查询前一天的数据,前一天是一个时间段啊,所以想获取前一天开始跟结束两个时间点的毫秒数,不是返回前台,是用来作为条件查询的

追答

不知道这是不是你想要的
public static String dateToMs(String dateTime)
final SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date dm = null;
try
dm = sdf.parse(dateTime);
catch (ParseException e)
e.printStackTrace();

return String.valueOf(dm.getTime());


public static void main(String[] args)
System.out.println(dateToMs("2013-08-18 00:00:00"));
System.out.println(dateToMs("2013-08-19 00:00:00"));

打印结果:
1376755200000
1376841600000

以上是关于请问在C语言里怎么获取当前时间和日期(精确到毫秒)?的主要内容,如果未能解决你的问题,请参考以下文章

Java获取时间戳精确到年月日时

sql中,根据身份证号码截取出了出生日期,怎么获取当前年龄,精确到月、日?

C语言编写精确到毫秒的时间函数

java中想获取前一天的开始和结束的两个毫秒数,请问分别怎样获取???????

C# 关于DateTime类型 精确到毫秒

怎么在java里获取带有毫秒的时间