Java转换字符串,具有毫秒到日期的对象

时间:2012-07-04 07:45:27

标签: java string date

我有2个字符串

  • 2012-06-25 15:02:22.948
  • 0530

我需要一个新的字符串,它将第5个字符串添加到第一个字符串中。

我想我可以通过将两个字符串转换为日期对象然后添加来完成此操作。但我不知道该怎么做,就像我使用

时一样

yyyy MM dd hh:mm:ss作为第一个字符串的日期格式,我收到错误。

谢谢!

5 个答案:

答案 0 :(得分:3)

字符串2012-06-25 15:02:22.948的格式不是yyyy MM dd hh:mm:ss,因此您收到“错误”并不奇怪(错误是什么?您越具体,越好的人可以帮助您!)。

试试yyyy-MM-dd HH:mm:ss.SSS。请参阅API documentation of SimpleDateFormat以了解格式字符串的确切语法。

注意:大写和小写在格式字符串中很重要。 hh表示12小时制,HH表示24小时制。如果您使用hh,则解析15小时将无效。您还没有在格式字符串中包含毫秒SSS

答案 1 :(得分:2)

您可以将字符串String1 + string2合并,并可以使用格式yyyy-MM-dd HH:mm:ss.SSSZ来解析日期。您可以查看更多文档 here

答案 2 :(得分:0)

您收到异常,因为您的日期格式字符串错误。你在表格

上给出一个日期字符串
"yyyy-MM-dd hh:mm:ss.S"

请参阅SimpleDateFormat javadoc

答案 3 :(得分:0)

试试这个:

    DateFormat format = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss.SSS");
    Date date = format.parse("2012-06-25 15:02:22.948");
    Calendar calendar = new GregorianCalendar();
    calendar.setTimeInMillis(date.getTime());

    int time = Integer.parseInt("0530");
    int hour = time / 100;
    int minute = time % 100;

    calendar.add(Calendar.HOUR_OF_DAY, hour);
    calendar.add(Calendar.MINUTE, minute);

    String newDateInString = format.format(calendar.getTime());

答案 4 :(得分:0)

其他答案都是正确但过时的。

java.time

与最早版本的Java捆绑在一起的旧日期时间类(java.util.Date/.Calendar等)现在已成为传统。

这些旧类已被java.time包取代。见Oracle Tutorial。许多功能已经被后端移植到Java 6& ThreeTen-Backport中的7,并在ThreeTenABP中进一步适应Android。

function onLoadFrame(fe:Event):void { // this is a counter that will count up each time this frame event happens frameCount ++; if (frameCount >= 20) { soundDiminish(transform, channel); // 3rd parameter optional frameCount = 0; // reset the frame counter } }

LocalDateTime类表示没有时区的日期时间。将它们用于第一件。

您的格式接近标准ISO 8601格式,只需将{SPACE替换为LocalDateTime

T

从UTC

偏移

另一件是offset-from-UTC。我们使用ZoneOffset类来实现此目的。

String input = "2012-06-25 15:02:22.948";
String inputStandardized = input.replace( " " , "T" );
LocalDateTime ldt = LocalDateTime.parse( inputStandardized );

如果没有偏移或时区,ZoneOffset offset = ZoneOffset.of( "+0530" ); 是时间轴上的实际时刻,而是对可能时刻的粗略概念。现在我们添加您的offset-from-UTC来标记实际时刻,由OffsetDateTime类表示。

LocalDateTime

分区

时区是用于处理夏令时(DST)等异常的偏移规则。因此,使用时区比仅仅偏移更好。

例如,如果已知此数据的上下文为time in India,请使用Asia/Kolkata等时区来获取ZonedDateTime

OffsetDateTime odt = OffsetDateTime.of( ldt , offset );