如何解析字符串中的日期并设置为新格式

时间:2015-08-03 14:20:48

标签: java

我试图将261107解析为ddmmyy中格式化的日期

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class parse {

  public static void main(String[] args) throws ParseException {
    // TODO Auto-generated method stub
    String strRawData =  "A2611070830151439.5935N 102057.0442E6.68152ID=AMY123";
    String strCode = strRawData.substring(0, 1);
    String datetemp = strRawData.substring(1, 7);
    SimpleDateFormat formatter = new SimpleDateFormat("ddmmyy");
    Date datelog = formatter.parse(datetemp);

    System.out.println(strCode);
    System.out.println(datetemp);
    System.out.println(datelog);

   }

 }

此代码返回:

A
261107
Fri Jan 26 00:11:00 SGT 2007

4 个答案:

答案 0 :(得分:3)

dd表示该月的某一天

MM表示月份(您使用mm表示分钟)

yy表示年份

SimpleDateFormatter产生的小修改:

  SimpleDateFormat dt = new SimpleDateFormat("ddMMyy");

这是来自Change date format in a Java string

的备忘单
G   Era designator  Text    AD
y   Year    Year    1996; 96
Y   Week year   Year    2009; 09
M   Month in year   Month   July; Jul; 07
w   Week in year    Number  27
W   Week in month   Number  2
D   Day in year Number  189
d   Day in month    Number  10
F   Day of week in month    Number  2
E   Day name in week    Text    Tuesday; Tue
u   Day number of week (1 = Monday, ..., 7 = Sunday)    Number  1
a   Am/pm marker    Text    PM
H   Hour in day (0-23)  Number  0
k   Hour in day (1-24)  Number  24
K   Hour in am/pm (0-11)    Number  0
h   Hour in am/pm (1-12)    Number  12
m   Minute in hour  Number  30
s   Second in minute    Number  55
S   Millisecond Number  978
z   Time zone   General time zone   Pacific Standard Time; PST; GMT-08:00
Z   Time zone   RFC 822 time zone   -0800
X   Time zone   ISO 8601 time zone  -08; -0800; -08:00

如果您想格式化日期的输出,可以使用其他SimpleDateFormatter.format(Date)方法。

以下是如何执行此操作的示例:

public static void main(String[] args) throws ParseException {

    String strRawData =  "261107";
    SimpleDateFormat dateParser = new SimpleDateFormat("ddMMyy"); //formatter for parsing date
    SimpleDateFormat dateFormatter = new SimpleDateFormat("dd-MM-yyyy"); //formatter for formatting date output
    Date date = dateParser.parse(strRawData);

    System.out.println(dateFormatter.format(date));
}
  

26-11-2007

答案 1 :(得分:2)

您的SimpleDateFormat中存在问题。

您必须使用资本M数月:

SimpleDateFormat formatter = new SimpleDateFormat("ddMMyy");

请参阅Java提供的SimpleDateFormat表:

enter image description here

答案 2 :(得分:2)

使用此SimpleDateFormat: SimpleDateFormat formatter = new SimpleDateFormat("ddMMyy");

答案 3 :(得分:1)

您需要使用MM而不是mm数月。大写是几个月;小写是分钟。