Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/352.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_Date_Time - Fatal编程技术网

Java 从数字字符串更改为日期字符串?

Java 从数字字符串更改为日期字符串?,java,date,time,Java,Date,Time,如何输入“1502009”并获得输出“2009年1月15日” 我已经阅读了很多关于日期的问题,但我仍然发现很难找到最好、最快的方法来实现这个特定的格式 谢谢你的帮助 编辑:我的示例字符串来自android应用程序中的对话框日期选择器。用户选择日期、月份和年份,并返回不同的整数。一月表示为0。因此,在我的应用程序中,我希望1502009代表2009年1月15日。尝试以下简单代码: public static void main(String[] args) throws ParseExceptio

如何输入“1502009”并获得输出“2009年1月15日”

我已经阅读了很多关于日期的问题,但我仍然发现很难找到最好、最快的方法来实现这个特定的格式

谢谢你的帮助


编辑:我的示例字符串来自android应用程序中的对话框日期选择器。用户选择日期、月份和年份,并返回不同的整数。一月表示为0。因此,在我的应用程序中,我希望1502009代表2009年1月15日。

尝试以下简单代码:

public static void main(String[] args) throws ParseException {
    String str="1502009";
    SimpleDateFormat format=new SimpleDateFormat("DDMyyyy");
    SimpleDateFormat resformat=new SimpleDateFormat("MMMM DD, yyyy");
    Date date =format.parse(str);
    System.out.println(resformat.format(date));
}

我建议您使用3个整数变量,并使用integer.parseInt和substring计算所有3个字段,然后进行映射。 再次计算输出字符串时,可以添加所有单个字符串


我这样说是因为您的输入似乎不正确。

所以月份可以在[0-11]范围内,对吗

use the following code to convert into the required format

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

public class dateconversion {
    /**
     * @param args
     */
    public static void main(String[] args) {
        String maxDate = "15012009";
        SimpleDateFormat fromFormat = new SimpleDateFormat("ddMMyyyy");
        SimpleDateFormat toFormat = new SimpleDateFormat("MMMM dd, yyyy");
        Date date = null;
        try {
            date = fromFormat.parse(maxDate);
        } catch (java.text.ParseException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        System.out.println("formated date:-" + toFormat.format(date));
    }
}
我认为这不是一个好主意。为了便于解析字符串,需要为每个字段定义一个定义的/恒定的宽度,以便应用模式
ddMMyyyy
。否则,您必须找到一种方法来计算每个部分的宽度,以便正确地解析它,这可能很棘手。例如,如果您有
1112008
,是
2008年1月11日
还是
2008年12月1日

我建议您更正日期选择器,以返回易于解析的日期字符串表示形式:

@Test
public void formatDateFromPicker() throws ParseException {
    // values from date picker
    int day = 15;
    int month = 0;
    int year = 2009;

    // build the easy to parse string from date picker: 15012009
    String strDate = String.format("%02d%02d%04d", 
            day, (month+1 /* add 1 if months start at 0 */), year);
    System.out.println(strDate);

    // parse the date string from the date picker
    Date date = new SimpleDateFormat("ddMMyyyy").parse(strDate);

    // ouput January 15, 2009
    System.out.println(new SimpleDateFormat("MMMM dd, yyyy").format(date));
}

可能重复:“最佳和最快的方式”已通过coding@Vallentin我试过使用SimpleDataFormat,但它也给了我时间。比如00:00:23等等,我不知道如何摆脱它。仅供参考,1502009年不等于2009年1月15日。如果您计划只为月份提供1位数字,那么不要尝试提供超过9月份的输入日期。在示例字符串中一月在哪里?15->月日,0->?->2009年->年度。无法回答您的问题,因为提供格式的示例字符串不正确。我已编辑我的答案。这将适用于1位数的月份。如果您需要2位数的月份,则需要新的模式。输出为0009年1月15日。OPs字符串有故障。你为什么要给出一个解决方案?如果输入像15112009,它会给出什么?@Masud感谢你的回答。它在一位数的月份内有效,但在两位数的月份内不起作用。我将努力解决它:)我可以这样做作为最后的手段。我只是想知道有没有更简单的方法。请查看我的编辑以查看我从何处获得输入。
“1512009”
给了我
格式化日期:-0009年12月15日
当它应该给我
2009年1月15日
我已经做了两个月的代码。如果您想要一位数的月份,那么您只需使用以下代码更改代码中的fromFormat。SimpleDataFormat fromFormat=新的SimpleDataFormat(“ddMyyyy”);我修改了你的代码以得到完美的答案,你介意我编辑你的答案然后接受吗?你确定你能做到。黏土