
在我们开发中,对于任何 *** 作,信息中时间是非常重要的一点,我们可以根据时间判断发生的时间,时间可以记录非常重要的信息;
在Java中,专门给我们提供了处理时间的API,根据Java封装的时间类,我们可以很方便的 *** 作时间信息;
在处理时间的时候,有个概念我们经常会用到,就是时间戳,时间戳表示的是从1970年01月01日00时00分00秒起至现在的总毫秒数,我们可以将时间戳与时间进行随意的替换;
Java中处理时间的类是javautilDate,这个类有常用的两个构造方法,一个是无参的获取的当前时间的对象,一个是出入一个时间戳,获取该时间戳对应的时间,JDK中这个类还提供了一些其他的构造方法,比如传入年月日等多个参数获取对应的时间,但是这些构造方法JDK中已经不建议使用了,需要注意的是,使用年月日参数(过时的构造方法)创建对象的时候,传入的年的参数需要减去1900,因为JDK中默认处理将年份增加了1900;
Java中还提供了一个类SimpleDateFormat可以方便我们将Date与字符串进行转换,Date类中重写了toString方法,所以当打印date的时候,会按照重写的格式进行打印,但是有时候我们需要定义自己的格式进行输入输出,这时候就可以使用SimpleDateFormat类来进行自定义;
创建SimpleDateFormat对象的时候,需要传入一个参数,我们可以按照自己想要的格式进行编写,例如”yyyy-MM-dd hh:mm:ss:SSS”, 这样输出的格式就会是年-月-日 时:分:秒;我们可以随意调整打印的顺序与格式;其中yyyy表示年份,MM表示月份(大写),dd表示日期,hh表示小时,mm表示分钟(小写),ss表示秒(小写),SS表示毫秒(大写);除了这些格式外,还可以打印到时区,周几,一周第几天等信息;
除了可以将时间对象转换成字符串,SimpleDateFormat也可以将字符串转按照相应的格式成对应的时间;
public static void main(String[] args) {
try {
Systemoutprintln("当前时间:"+new Date());
Systemoutprintln("IP地址 : " + InetAddressgetLocalHost());
} catch (UnknownHostException e) {
eprintStackTrace();
}
}
1、C语言中读取系统时间的函数为time(),其函数原型为:
#include <timeh>
time_t time( time_t ) ;
time_t就是long,函数返回从1970年1月1日(MFC是1899年12月31日)0时0分0秒,到现在的的秒数。
2、C语言还提供了将秒数转换成相应的时间格式的函数:
char ctime(const time_t timer); //将日历时间转换成本地时间,返回转换后的字符串指针 可定义字符串或是字符指针来接收返回值
struct tm gmtime(const time_t timer); //将日历时间转化为世界标准时间(即格林尼治时间),返回结构体指针 可定义struct tm 变量来接收结果
struct tm localtime(const time_t timer); //将日历时间转化为本地时间,返回结构体指针 可定义struct tm 变量来接收结果
3、例程:
#include <timeh>void main()
{
time_t t;
struct tm pt ;
char pc ;
time(&t);
pc=ctime(&t) ; printf("ctime:%s", pc );
pt=localtime(&t) ; printf("year=%d", pt->tm_year+1900 );
}
//时间结构体struct tm 说明:
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()为负。/
};
SimpleDateFormat formatter = new SimpleDateFormat ("yyyy年MM月dd日 HH:mm:ss ");
Date curDate = new Date(SystemcurrentTimeMillis());//获取当前时间
String str = formatterformat(curDate);
Logi("time", str);
str就是系统时间日期
#include <iostream>
#include <windowsh>
using namespace std;
void main()
{
SYSTEMTIME time;//时间结构声明,这个结构是系统的,
GetSystemTime( &time ); //调用获取系统时间api
//GetLocalTime();这个函数是获取本地时间api
char t_y;
char t_m;
char t_h;
char t_Min;
char t_s;
char t_Mi;
char t_d;
char t_w;
SYSTEMTIME time;//时间结构声明,这个结构是系统的,
GetSystemTime( &time );//调用获取系统时间api
sprintf(t_y, "%d", timewYear);//将年份格式输出到t_y变量中
sprintf(t_m, "%d", timewMonth);
sprintf(t_w, "%d", timewDayOfWeek);
sprintf(t_d, "%d", timewDay);
sprintf(t_h, "%d", timewHour);
sprintf(t_Min, "%d", timewMinute);
sprintf(t_s, "%d", timewSecond);
sprintf(t_Mi, "%d", timewMilliseconds);
printf("%s,%s,%s,%s,%s,%s,%s,%s",
timewYear,
timewMonth,
timewDayOfWeek,
timewDay,
timewHour,
timewMinute,
timewSecond,
timewMilliseconds);
}
/
SYSTEM结构成员如下:
SYSTEMTIME STRUCT
{
WORD wYear ; 年
WORD wMonth ;月
WORD wDayOfWeek ;星期,0=星期日,1=星期一
WORD wDay ;日
WORD wHour ;时
WORD wMinute ;分
WORD wSecond ;秒
WORD wMilliseconds ;毫秒
}SYSTEMTIME ENDS
///
1、用TextOut是能够显示出来的,你可能没注意转化格式。编译器和VC助手会提醒你TextOut(hdc,x,y,str,strlen(str))里面的str应该是char格式。
2、而你获取时间的GetLocalTime(&st)里的st是结构体SYSTEMTIME。你应该首先转化格式。可以用sprintf(str,"",)。注意加头文件include <stringh>
3、TextOut(hdc,x,y,str,strlen(""))里面的x与y是否给定了明确的值?str这个变量没有在前面声明,strlen("")里面无字符,这样输出的结果自然是零个字符,TextOut最后一个参数项是控制输出字符的个数的。你应该改为strlen(str)
当你使用strXX的时候,就应该记得加头文件<stringh>
4、你使用hdc的时候,注意要用到一个相对应的函数释放DC,这样才不容易发生内存错误。与BeginPaint()对应的是EndPaint(HWND ,PAINTSTRUCT)。
5、HDC hdc;
SYSTEMTIME st;
PAINTSTRUCT ps;
这些声明你只在传递WM_PAINT消息时才用到,所以大可不必在该消息外声明。你只要在case下面加个{},将声明和实现函数放在这个{}内就可以避开编译器报错。
typedef struct _SYSTEMTIME {
WORD wYear;
WORD wMonth;
WORD wDayOfWeek;
WORD wDay;
WORD wHour;
WORD wMinute;
WORD wSecond;
WORD wMilliseconds;
} SYSTEMTIME, PSYSTEMTIME, LPSYSTEMTIME;
你首先要明白你用来获取时间的这个结构体。
typedef unsigned short WORD;
只要你会用右键菜单的“转到XX的定义”(英文版的好像是“defined to”),只要点击一下,就会去到该结构体或变量的声明里去,你就会知道该结构体里的内容有什么,或者该类型实际上是什么类型转化而来的。
看我修正后的代码:
include <stringh>
…………
case WM_PAINT:
{
HDC hdc;
SYSTEMTIME st;
PAINTSTRUCT ps;
char str[31]="";
struct WEEK
{
char temp[10];
}wk[7]={"Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"};
GetLocalTime(&st);
hdc=BeginPaint(hwnd,&ps);
sprintf(str,"%04d-%02d-%02d %02d:%02d:%02d %s",stwYear,stwMonth,stwDay,stwHour,stwMinute,stwSecond,wk[stwDayofWeek]temp);
TextOut(hdc,10,10,str,strlen(str));
EndPaint(hwnd,&ps);
}
break;
以上就是关于什么是java时间API全部的内容,包括:什么是java时间API、java如何获取当前时间,java如何获取ip地址、获取时间的C C++函数等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)