什么是java时间API

什么是java时间API,第1张

在我们开发中,对于任何 *** 作,信息中时间是非常重要的一点,我们可以根据时间判断发生的时间,时间可以记录非常重要的信息;

在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++函数等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/9603688.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-30
下一篇2023-04-30

发表评论

登录后才能评论

评论列表(0条)

    保存