Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/311.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在java中拆分字符串_Java_Android_Date_Calendar_Alarmmanager - Fatal编程技术网

如何在java中拆分字符串

如何在java中拆分字符串,java,android,date,calendar,alarmmanager,Java,Android,Date,Calendar,Alarmmanager,我有一个android项目,我需要拆分字符串,它实际上是日期,这里是我要拆分的字符串: String datetime = "01/03/2013 09:00"; 我这样称呼他们: int year = splitDateTime(dateTime)[0]; public int[]splitDateTime(字符串datetime){ 字符串日期\时间=日期时间; 字符串分隔符=“/:”; 弦[]翼子板; int[]int部分; sParts=日期和时间分割(分隔符); intParts=

我有一个android项目,我需要拆分字符串,它实际上是日期,这里是我要拆分的字符串:

String datetime = "01/03/2013 09:00";
我这样称呼他们:

int year = splitDateTime(dateTime)[0];
public int[]splitDateTime(字符串datetime){
字符串日期\时间=日期时间;
字符串分隔符=“/:”;
弦[]翼子板;
int[]int部分;
sParts=日期和时间分割(分隔符);
intParts=新的int[sParts.length];
for(int i=0;i
但它总是给我一个错误,所以如果你们能帮我,我会很高兴的。
干杯

我打赌你的意思是:

String datetime = "01/03/2013 09:00";

String[] sParts = datetime.split("[/:\\s+]");
int[] iParts = new int[sParts.length];

for(int i = 0; i < sParts.length; i++)
    iParts[i] = Integer.parseInt(sParts[i]);

System.out.println(Arrays.toString(iParts));
我认为你应该使用


您可以使用正则表达式,使用类似于
^(\d+)/(\d+)/(\d+)/(\d+)(\d)的东西,您可以获得每个捕获的组。

我认为基于StringTokenizer的解决方案将是最快的

public static int[] splitDateTime(String dateTime) {
    int[] intParts = new int[5];
    StringTokenizer t = new StringTokenizer(dateTime, "/ :");
    for (int i = 0; t.hasMoreTokens(); i++) {
        intParts[i] = Integer.parseInt(t.nextToken());
    }
    return intParts;
}

public static void main(final String[] args) throws IOException {
    System.out.println(Arrays.toString(splitDateTime("01/03/2013 09:00")));
}
输出

[1, 3, 2013, 9, 0]

我正在使用DateFormat将字符串解析为日期,并从中开始。有更好的方法从日期中获取日期、月份、年份和其他元素,而不是拆分日期。如果dateformat发生更改怎么办?您的
删除器(请正确拼写您的代码;)永远不会出现在字符串中。我需要这样输出1 3 2013 9 0然后您只需将“分隔符”更改为“[/:\\s+]”,并确保将正确的变量名传递给函数,我应该将其转换为什么,因为你递给我的这个新日历和上面的一样。我使用它,但出于某种原因,我不知道我什么时候得到月份,它是给2而不是3,我不知道它有什么问题。通常android日历月份从0开始,一月就是这样,所以你必须添加一个以获得正确的值Java日历月从索引0开始,所以你总是需要添加1
String dateTime = "01/03/2013 09:00";
SimpleDateFormat f = new SimpleDateFormat("dd/MM/yyyy HH:mm");
Date d = f.parse(dateTime);

Calendar c = Calendar.getInstance();
c.setTime(d);
int year = c.get(Calendar.YEAR);
public static int[] splitDateTime(String dateTime) {
    int[] intParts = new int[5];
    StringTokenizer t = new StringTokenizer(dateTime, "/ :");
    for (int i = 0; t.hasMoreTokens(); i++) {
        intParts[i] = Integer.parseInt(t.nextToken());
    }
    return intParts;
}

public static void main(final String[] args) throws IOException {
    System.out.println(Arrays.toString(splitDateTime("01/03/2013 09:00")));
}
[1, 3, 2013, 9, 0]