字符串到java的日期时间 [英] String to date time in java

查看:99
本文介绍了字符串到java的日期时间的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个日期时间字符串2013-06-04 23:59:59我想从这个字符串中分离日期和时间。

 新日期(2013-06-04 23:59:59)

java的构造函数已被弃用,所以我使用Calender类。我尝试过代码

 日历mydate = new GregorianCalendar(); 
String mystring =2013-06-04 23:59:59;
Date thedate = new SimpleDateFormat(yyyy-mm-dd HH:MM:SS,Locale.ENGLISH).parse(mystring);
mydate.setTime(thedate);
//击穿
System.out.println(mydate - >+ mydate);
System.out.println(year - >+ mydate.get(Calendar.YEAR));
System.out.println(month - >+ mydate.get(Calendar.MONTH));
System.out.println(dom - >+ mydate.get(Calendar.DAY_OF_MONTH));
System.out.println(dow - >+ mydate.get(Calendar.DAY_OF_WEEK));
System.out.println(hour - >+ mydate.get(Calendar.HOUR));
System.out.println(minute - >+ mydate.get(Calendar.MINUTE));
System.out.println(second - >+ mydate.get(Calendar.SECOND));
System.out.println(milli - >+ mydate.get(Calendar.MILLISECOND));
System.out.println(ampm - >+ mydate.get(Calendar.AM_PM));
System.out.println(hod - >+ mydate.get(Calendar.HOUR_OF_DAY));

但结果错误。

  mydate  - > java.util.GregorianCalendar [time = 1509816960059,areFieldsSet = true,areAllFieldsSet = true,lenient = true,zone = sun.util.calendar.ZoneInfo [id =Asia / Calcutta,offset = 19800000,dstSavings = 0,useDaylight = false,transitions = 6,lastRule = null],firstDayOfWeek = 1,minimumDaysInFirstWeek = 1,ERA = 1,YEAR = 2017,MONTH = 10,WEEK_OF_YEAR = 44,WEEK_OF_MONTH = 1,DAY_OF_MONTH = 4,DAY_OF_YEAR = 308,DAY_OF_WEEK = 7 ,DAY_OF_WEEK_IN_MONTH = 1,AM_PM = 1,HOUR = 11,HOUR_OF_DAY = 23,MINUTE = 6,SECOND = 0,MILLISECOND = 59,ZONE_OFFSET = 19800000,DST_OFFSET = 0] 
年 - > 2017
月 - > 10
dom - > 4
dow - > 7
小时 - > 11
分钟 - > 6
second - > 0
milli - > 59
ampm - > 1
hod - > 23

请确定我正在做的错误,并纠正错误。



我需要字符串中提到的值。

解决方案

你的错误模式。 MM 为月, mm 为分钟, ss 几秒钟。



使用:

 yyyy-MM-dd HH:mm:ss

另外,请注意, strong>,意味着它从 0 11 而不是 1 12

 日历mydate = new GregorianCalendar(); 
String mystring =2013-06-04 23:59:59;
日期thedate = new SimpleDateFormat(yyyy-MM-dd HH:mm:ss,Locale.ENGLISH).parse(mystring);
mydate.setTime(thedate);
//击穿
System.out.println(mydate - >+ mydate);
System.out.println(year - >+ mydate.get(Calendar.YEAR));
System.out.println(month - >+(mydate.get(Calendar.MONTH)+1)); //< - correction
System.out.println(dom - >+ mydate.get(Calendar.DAY_OF_MONTH));
System.out.println(dow - >+ mydate.get(Calendar.DAY_OF_WEEK));
System.out.println(hour - >+ mydate.get(Calendar.HOUR));
System.out.println(minute - >+ mydate.get(Calendar.MINUTE));
System.out.println(second - >+ mydate.get(Calendar.SECOND));
System.out.println(milli - >+ mydate.get(Calendar.MILLISECOND));
System.out.println(ampm - >+ mydate.get(Calendar.AM_PM));
System.out.println(hod - >+ mydate.get(Calendar.HOUR_OF_DAY));


I have a date time string "2013-06-04 23:59:59" I want to get the date and time separately from this string.

new Date ("2013-06-04 23:59:59") 

constructor of java has been deprecated so I used the Calender class. I have tried the code

Calendar mydate = new GregorianCalendar();
        String mystring = "2013-06-04 23:59:59";
        Date thedate = new SimpleDateFormat("yyyy-mm-dd HH:MM:SS", Locale.ENGLISH).parse(mystring);
        mydate.setTime(thedate);
        //breakdown
        System.out.println("mydate -> "+mydate);
        System.out.println("year   -> "+mydate.get(Calendar.YEAR));
        System.out.println("month  -> "+mydate.get(Calendar.MONTH));
        System.out.println("dom    -> "+mydate.get(Calendar.DAY_OF_MONTH));
        System.out.println("dow    -> "+mydate.get(Calendar.DAY_OF_WEEK));
        System.out.println("hour   -> "+mydate.get(Calendar.HOUR));
        System.out.println("minute -> "+mydate.get(Calendar.MINUTE));
        System.out.println("second -> "+mydate.get(Calendar.SECOND));
        System.out.println("milli  -> "+mydate.get(Calendar.MILLISECOND));
        System.out.println("ampm   -> "+mydate.get(Calendar.AM_PM));
        System.out.println("hod    -> "+mydate.get(Calendar.HOUR_OF_DAY));

but the result is wrong.

mydate -> java.util.GregorianCalendar[time=1509816960059,areFieldsSet=true,areAllFieldsSet=true,lenient=true,zone=sun.util.calendar.ZoneInfo[id="Asia/Calcutta",offset=19800000,dstSavings=0,useDaylight=false,transitions=6,lastRule=null],firstDayOfWeek=1,minimalDaysInFirstWeek=1,ERA=1,YEAR=2017,MONTH=10,WEEK_OF_YEAR=44,WEEK_OF_MONTH=1,DAY_OF_MONTH=4,DAY_OF_YEAR=308,DAY_OF_WEEK=7,DAY_OF_WEEK_IN_MONTH=1,AM_PM=1,HOUR=11,HOUR_OF_DAY=23,MINUTE=6,SECOND=0,MILLISECOND=59,ZONE_OFFSET=19800000,DST_OFFSET=0]
year   -> 2017
month  -> 10
dom    -> 4
dow    -> 7
hour   -> 11
minute -> 6
second -> 0
milli  -> 59
ampm   -> 1
hod    -> 23

Please figure out the mistake I am doing and rectify the error.

I need the values that are mentioned in the string.

解决方案

You got the wrong pattern. MM is for month, mm is for minutes and ss for seconds.

Use:

"yyyy-MM-dd HH:mm:ss"

Also, notice that the month is zero-based, meaning it goes from 0 to 11, not 1 to 12:

Calendar mydate = new GregorianCalendar();
String mystring = "2013-06-04 23:59:59";
Date thedate = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.ENGLISH).parse(mystring);
mydate.setTime(thedate);
//breakdown
System.out.println("mydate -> "+mydate);
System.out.println("year   -> "+mydate.get(Calendar.YEAR));
System.out.println("month  -> "+(mydate.get(Calendar.MONTH)+1)); // <-- corrected
System.out.println("dom    -> "+mydate.get(Calendar.DAY_OF_MONTH));
System.out.println("dow    -> "+mydate.get(Calendar.DAY_OF_WEEK));
System.out.println("hour   -> "+mydate.get(Calendar.HOUR));
System.out.println("minute -> "+mydate.get(Calendar.MINUTE));
System.out.println("second -> "+mydate.get(Calendar.SECOND));
System.out.println("milli  -> "+mydate.get(Calendar.MILLISECOND));
System.out.println("ampm   -> "+mydate.get(Calendar.AM_PM));
System.out.println("hod    -> "+mydate.get(Calendar.HOUR_OF_DAY));

这篇关于字符串到java的日期时间的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆