
引入 javautil;
Calendar now= CalendargetInstance();//这个就是获取时间的
引入 javatext;
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//这个是用来格式化时间的
sdfformat(nowgetTime()); //返回一个字符串
Systemoutprintln(sdfformat(nowgetTime());//打印出来看看
Calendar date = CalendargetInstance();
int day = dateget(CalendarDAY_OF_MONTH);
int month = dateget(CalendarMONTH) + 1;
int year = dateget(CalendarYEAR);
Systemoutprintln("day=" + day);
Systemoutprintln("month=" + month);
Systemoutprintln("year=" + year);
如果再不对的话,看一下你系统的时间对不对。
如果你要获取的是Internet时间,可以使用NTP服务。
NTP概念简介
Network Time Protocol(NTP)是用来使计算机时间同步化的一种协议,它可以使计算机对其服务器或时钟源(如石英钟,GPS等等)做同步化,它可以提供高精准度的时间校正(LAN上与标准间差小于1毫秒,WAN上几十毫秒),且可介由加密确认的方式来防止恶毒的协议攻击。
java实现:
import javaioInputStream;import javanetSocket;
public class TimeUtil {
public static final int DEFAULT_PORT = 37;//NTP服务器端口
public static final String DEFAULT_HOST = "time-nwnistgov";//NTP服务器地址
private TimeUtil() {
};
public static long currentTimeMillis(Boolean sync) {
if (sync != null && syncbooleanValue() != true)
return SystemcurrentTimeMillis();
try {
return syncCurrentTime();
} catch (Exception e) {
return SystemcurrentTimeMillis();
}
}
public static long syncCurrentTime() throws Exception {
// The time protocol sets the epoch at 1900,
// the java Date class at 1970 This number
// converts between them
long differenceBetweenEpochs = 2208988800L;
// If you'd rather not use the magic number uncomment
// the following section which calculates it directly
/
TimeZone gmt = TimeZonegetTimeZone("GMT"); Calendar epoch1900 =
CalendargetInstance(gmt); epoch1900set(1900, 01, 01, 00, 00, 00);
long epoch1900ms = epoch1900getTime()getTime(); Calendar epoch1970
= CalendargetInstance(gmt); epoch1970set(1970, 01, 01, 00, 00, 00);
long epoch1970ms = epoch1970getTime()getTime();
long differenceInMS = epoch1970ms - epoch1900ms; long
differenceBetweenEpochs = differenceInMS/1000;
/
InputStream raw = null;
try {
Socket theSocket = new Socket(DEFAULT_HOST, DEFAULT_PORT);
raw = theSocketgetInputStream();
long secondsSince1900 = 0;
for (int i = 0; i < 4; i++) {
secondsSince1900 = (secondsSince1900 << 8) | rawread();
}
if (raw != null)
rawclose();
long secondsSince1970 = secondsSince1900 - differenceBetweenEpochs;
long msSince1970 = secondsSince1970 1000;
return msSince1970;
} catch (Exception e) {
throw new Exception(e);
}
}
}
中国大概能用的NTP时间服务器
server 133100118 prefer
server 2107214544
server 20311718036 //程序中所用的
server 131107110
server timeasiaapplecom
server 642369653
server 1301491721
server 669268246
server >
getDate();
换成
new Date()就可以了,注意这里Date()是javautil包中的。
这样输出的时间格式是:
dow mon dd hh:mm:ss zzz yyyy其中:
dow 是一周中的某一天 (Sun, Mon, Tue, Wed, Thu, Fri, Sat)。
mon 是月份 (Jan, Feb, Mar, Apr, May, Jun, Jul, Aug, Sep, Oct, Nov, Dec)。
dd 是一月中的某一天(01 至 31),显示为两位十进制数。
hh 是一天中的小时(00 至 23),显示为两位十进制数。
mm 是小时中的分钟(00 至 59),显示为两位十进制数。
ss 是分钟中的秒数(00 至 61),显示为两位十进制数。
zzz 是时区(并可以反映夏令时)。标准时区缩写包括方法 parse 识别的时区缩写。如果不提供时区信息,则 zzz 为空,即根本不包括任何字符。
yyyy 是年份,显示为 4 位十进制数。
例如:今天的某个时间 Wed May 12 10:28:34 CST 2010
如果以上面的这种时间形式直接插入到数据库,可能可读性较差
因此需要对时间格式进行适当的调整
可利用java提供的javatextSimpleDateFormat类进行修改
new SimpleDateFormat("yyyy-MM-dd HH:mm:ss")
输出的时间格式为 2010-05-12 10:28:34
最后将getDate()修改成
new SimpleDateFormat("yyyy-MM-dd HH:mm:ss")format(new Date())
就可以了
这是java推荐的写法
Calendar c = CalendargetInstance();
cset(CalendarHOUR_OF_DAY, 6);
cset(CalendarMINUTE, 0);
cset(CalendarSECOND, 0);
Date m6 = cgetTime();
晚上9点就是21点,与上面相同
1Date() + SimpleDateFormat()
DateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");Date date = new Date();Systemoutprintln(dateFormatformat(date));
2 Calender() + SimpleDateFormat()Calendar cal = CalendargetInstance();
Systemoutprintln(dateFormatformat(calgetTime()));
举个例子给你:
import javautilDate;
import javatextDateFormat;
import javatextSimpleDateFormat;
import javautilCalendar;
public class GetCurrentDateTime {
public static void main(String[] args) {
DateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
//get current date time with Date()
Date date = new Date();
Systemoutprintln(dateFormatformat(date));
//get current date time with Calendar()
Calendar cal = CalendargetInstance();
Systemoutprintln(dateFormatformat(calgetTime()));
}
}
别忘了import
因为你的这一句 Calendar c = CalendargetInstance();是写在循环外面的,声明了c以后那c就是这一刻的时间,无论你再怎么循环还是只打印声明c时的时间。这段代码我没太看明白你要做什么,不过你想循环输出当前的时间可以这样写:
while(true){Calendar c = CalendargetInstance();
int time = cget(CalendarSECOND);
Systemoutprintln(time);
}
把Calendar c = CalendargetInstance();写在循环里就是不停的循环获得当前时间。
首先获取当前时间:
javautilDate nowdate = new javautilDate();
2/2
然后如果你想时间的格式和你想用的时间格式一致 那么就要格式化时间了SimpleDateFormat 的包在javatext包下SimpleDateFormat
sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss") //年月日 时分秒
String t = sdfparse(nowdate);
以上就是关于java程序中获取当前时间问题全部的内容,包括:java程序中获取当前时间问题、java 获取系统当前时间、java获取网络当前时间等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)