java程序中获取当前时间问题

java程序中获取当前时间问题,第1张

引入 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获取网络当前时间等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

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

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

发表评论

登录后才能评论

评论列表(0条)

    保存