我有2个字符串
我需要一个新的字符串,它将第5个字符串添加到第一个字符串中。
我想我可以通过将两个字符串转换为日期对象然后添加来完成此操作。但我不知道该怎么做,就像我使用
时一样yyyy MM dd hh:mm:ss作为第一个字符串的日期格式,我收到错误。
谢谢!
答案 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)
答案 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捆绑在一起的旧日期时间类(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
另一件是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 );