首页 > 编程知识 正文

java中将字符串转化为数字,java获取当前时间

时间:2023-05-06 05:00:52 阅读:11744 作者:2447

在Java中将“2010年1月2日”格式的字符串转换为Date的最佳方法是什么?

最终,希望将月、日期和年分解为整数,以便使用

日期=new date (;

date.setMonth (.

date.setYear (.

date.setDay (.

date.setlongcurrenttime=date.gettime (;

将日期转换为时间。

#1楼

另外,一些客户端技术(如GWT )不提供简单数据格式。

选择Calendar.getInstance ()是个好主意。 这要求比较两个日期。 长时间约会。

#2楼

String str_date='11-June-07 ';

数据格式格式器;

日期日期;

formatter=newsimpledateformat (DD-mmm-YY );

date=Formatter.parse(str_date;

#3楼

数据格式数据格式=newsimpledateformat (yyyy-mm-DD );

日期日期;

try {

日期=date format.parse (2013-12-4 );

system.out.println (date.tostring ); //wed dec 0400336000336000 CST 2013

字符串输出=date format.format (date;

system.out.println(output; //2013-12-04

}

catch(parseexceptione ) {

e .打印堆栈跟踪(;

}

这对我很好。

#4楼

有几个答案在技术上是正确的,但我不推荐那个。

你知道,java.util.Date和Calendar类很麻烦。 由于设计和实现的缺陷,请避免它们。 幸运的是,可以选择另外两个优秀的日期和时间库。

正如克里斯多普赫(kristopherjohnson )在对这个问题的评论中正确指出的那样,其他回答忽略了以下重要问题:

一天中的时间

日期既有日期部分也有时间部分)

时区

一天的开始取决于时区。 如果无法指定时区,则应用JVM的默认时区。 也就是说,在其他计算机上运行或使用更改的时区设置可能会更改代码的行为。 可能不是您想要的。

语言环境

区域设置语言指定如何分析分析过程中遇到的单词(月和日的名称)。 (BalusC的回答正确地解决了这个问题。 )另外,在生成日期和时间字符串表示时,某些语言环境会影响某些格式化程序的输出。

乔达时代

关于Joda-Time的几个注意事项如下。

时区

在Joda-Time中,DateTime对象真的知道自己分配的时区。 这与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非常线程化和安全,可以使某些工作更加明确。

转换次数

要与不知道Joda-Time对象的其他类/框架一起使用,需要java.util.Date对象。 幸运的是,到处走动非常容易。

来自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 = dateTime.toDate();

样例代码

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

#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 = date.getYear(); // 2010

int day = date.getDayOfMonth(); // 2

Month month = date.getMonth(); // JANUARY

int monthAsInt = month.getValue(); // 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;

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。