java字符串⽇期转换成数字,Java字符串到⽇期的转换⽤Java将“ 2010年1⽉2⽇”格式的String转换为Date的最佳⽅法是什么?
最终,我想将⽉份,⽇期和年份分解为整数,以便可以使⽤
Date date = new Date();
date.setMonth()..
date.setYear()..
date.setDay()..
date.setlong currentTime = Time();
将⽇期转换为时间。
#1楼
⽽且,某些客户端技术(例如GWT )不提供SimpleDateFormat。
选择Instance()是个好主意,您的要求是⽐较两个⽇期。 长时间约会。
#2楼
String str_date = "11-June-07";
DateFormat formatter;
Date date;
formatter = new SimpleDateFormat("dd-MMM-yy");
date = formatter.parse(str_date);
#3楼
DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
Date date;
try {undefined
date = dateFormat.parse("2013-12-4");
System.out.String()); // Wed Dec 04 00:00:00 CST 2013
String output = dateFormat.format(date);
System.out.println(output); // 2013-12-04
}
catch (ParseException e) {undefined
e.printStackTrace();
}
这对我来说可以。
#4楼
尽管某些答案在技术上是正确的,但不建议这样做。
众所周知,java.util.Date和Calendar类很⿇烦。 由于设计和实现中的缺陷,请避免它们。 幸运的是,我们可以选择其他两个出⾊的⽇期时间库:
正如克⾥斯托弗·约翰逊(Kristopher Johnson)在对该问题的评论中正确指出的那样,其他答案忽略了以下重要问题:
⼀天中的时间
⽇期同时具有⽇期部分和时间部分)
时区
⼀天的开始取决于时区。 如果您未能指定时区,那么将应⽤JVM的默认时区。 这意味着当在其他计算机上运⾏或使⽤修改的时区设置时,代码的⾏为可能会更改。 可能不是您想要的。
语⾔环境
语⾔环境的语⾔指定了如何解析在解析过程中遇到的单词(⽉和⽇的名称)。 ( BalusC的答案正确地解决了这⼀问题。)此外,在⽣成⽇期时间的表⽰形式时,语⾔环境会影响某些格式器的输出。
乔达时代
有关Joda-Time的⼀些注意事项如下。
时区
在Joda-Time中 , 对象真正知道其⾃⼰分配的时区。 这与java.util.Date类形成了对⽐,后者似乎有⼀个时区,但没有。
请注意,在下⾯的⽰例代码中,我们如何将时区对象传递给解析字符串的格式化程序。 该时区⽤于将⽇期时间解释为发⽣在该时区中。 因此,您需要考虑并确定该字符串输⼊所代表的时区。
由于输⼊字符串中没有时间部分,因此Joda-Time会将指定时区中⼀天的第⼀时刻指定为⼀天中的时间。 由于夏令时(DST)或其他异常,通常这表⽰00:00:00但并⾮总是如此。 顺便说⼀句,您可以通过调⽤withTimeAtStartOfDay对任何DateTime实例执⾏相同的withTimeAtStartOfDay 。
格式化程序模式
在Joda-Time中,格式化程序模式中使⽤的字符与java.util.Date/Calendar中的字符相似,但并不完全相同。 仔细阅读⽂档。
不变性
我们通常在Joda-Time中使⽤不可变的类。 ⽽不是修改现有的Date-Time对象,我们调⽤的⽅法是基于
另⼀个对象创建⼀个新的新实例,并复制了⼤多数⽅⾯,除⾮需要进⾏更改。 下⾯的最后⼀⾏是对withZone的调⽤。 不变性有助于使Joda-Time⾮常线程安全,还可以使某些⼯作更加清晰。
转换次数
您将需要java.util.Date对象,以与其他不了解Joda-Time对象的类/框架⼀起使⽤。 幸运的是,来回移动⾮常容易。
从java.util.Date对象(此处称为date )到Joda-Time DateTime…
org.joda.time.DateTime dateTime = new DateTime( date, timeZone );
从Joda-Time转到java.util.Date对象的另⼀⽅向…
java.util.Date date = Date();
样例代码
String input = "January 2, 2010";
java.util.Locale locale = java.util.Locale.US;
DateTimeZone timeZone = DateTimeZone.forID( "Pacific/Honolulu" ); // Arbitrarily chosen for example.
DateTimeFormatter formatter = DateTimeFormat.forPattern( "MMMM d, yyyy" ).withZone( timeZone ).withLocale( locale );
DateTime dateTime = formatter.parseDateTime( input );
System.out.println( "dateTime: " + dateTime );
System.out.println( "dateTime in UTC/GMT: " + dateTime.withZone( DateTimeZone.UTC ) );
运⾏时...
dateTime: 2010-01-02T00:00:00.000-10:00
dateTime in UTC/GMT: 2010-01-02T10:00:00.000Z
string转date的方法
#5楼
使⽤Java 8,我们获得了⼀个新的⽇期/时间API( JSR 310 )。
可以使⽤以下⽅式在Java 8中解析⽇期,⽽⽆需依赖Joda-Time :
String str = "January 2nd, 2010";
// if we 2nd even we have changed in pattern also it is not working please workout with 2nd
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("MMMM Q, yyyy", Locale.ENGLISH);
LocalDate date = LocalDate.parse(str, formatter);
// access date fields
int year = Year(); // 2010
int day = DayOfMonth(); // 2
Month month = Month(); // JANUARY
int monthAsInt = Value(); // 1
LocalDate是⽤于表⽰⽇期(⽆时间)的标准Java 8类。 如果要解析包含⽇期和时间信息的值,则应使⽤
LocalDateTime 。 对于具有时区的值,请使⽤ZonedDateTime 。 两者都提供类似于LocalDate的parse()⽅法:
LocalDateTime dateWithTime = LocalDateTime.parse(strWithDateAndTime, dateTimeFormatter);
ZonedDateTime zoned = ZonedDateTime.parse(strWithTimeZone, zoneFormatter);
All letters 'A' to 'Z' and 'a' to 'z' are reserved as pattern letters.
The following pattern letters are defined:
Symbol Meaning Presentation Examples
------ ------- ------------ -------
G era text AD; Anno Domini; A
u year year 2004; 04
y year-of-era year 2004; 04
D day-of-year number 189
M/L month-of-year number/text 7; 07; Jul; July; J
d day-of-month number 10
Q/q quarter-of-year number/text 3; 03; Q3; 3rd quarter
Y week-based-year year 1996; 96
w week-of-week-based-year number 27
W week-of-month number 4
E day-of-week text Tue; Tuesday; T
e/c localized day-of-week number/text 2; 02; Tue; Tuesday; T
F week-of-month number 3
a am-pm-of-day text PM
h clock-hour-of-am-pm (1-12) number 12
K hour-of-am-pm (0-11) number 0
k clock-hour-of-am-pm (1-24) number 0
H hour-of-day (0-23) number 0
m minute-of-hour number 30
s second-of-minute number 55
S fraction-of-second fraction 978
A milli-of-day number 1234
n nano-of-second number 987654321
N nano-of-day number 1234000000
V time-zone ID zone-id America/Los_Angeles; Z; -08:30
z time-zone name zone-name Pacific Standard Time; PST
O localized zone-offset offset-O GMT+8; GMT+08:00; UTC-08:00;
X zone-offset 'Z' for zero offset-X Z; -08; -0830; -08:30; -083015; -08:30:15; x zone-offset offset-x +0000; -08; -0830; -08:30; -083015; -08:30:15;
Z zone-offset offset-Z +0000; -0800; -08:00;

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。