Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/355.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.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 - Fatal编程技术网

Java-以不同格式接收字符串的复制方法

Java-以不同格式接收字符串的复制方法,java,date,Java,Date,目前正在开发一个小型Java日期类程序 好的,我有两个构造函数,它们将日期作为参数(例如28、12、1995),另一个构造函数作为解析字符串(例如“25-4-2009”)来查找和验证值。我希望创建另一个构造函数,它解析字符串,但使用不同的日期格式,表面上看起来很简单,但我不确定应该遵循什么逻辑 我已经尝试过为日期字符串创建一个新的构造函数,使用不同的变量,因此,例如“dateString”、“dateString2”,而不是“dateString”,但是Java不喜欢相同类型的重复方法 我应该创

目前正在开发一个小型Java日期类程序

好的,我有两个构造函数,它们将日期作为参数(例如28、12、1995),另一个构造函数作为解析字符串(例如“25-4-2009”)来查找和验证值。我希望创建另一个构造函数,它解析字符串,但使用不同的日期格式,表面上看起来很简单,但我不确定应该遵循什么逻辑

我已经尝试过为日期字符串创建一个新的构造函数,使用不同的变量,因此,例如“dateString”、“dateString2”,而不是“dateString”,但是Java不喜欢相同类型的重复方法

我应该创建一个新的对象类型,比如Date2,并使用它来解析新的格式化日期字符串吗?还是有更好的方法

谢谢


注意:我没有使用SimpleDataFormat,很抱歉标题不好。

如果您无法编写能够从字符串动态确定日期格式的解析函数,则必须通过第二个参数将额外信息传递给构造函数,告知它应该使用哪种日期格式

如果您无法编写能够根据字符串动态确定日期格式的解析函数,则必须通过第二个参数将额外信息传递给构造函数,告知它应该使用哪种日期格式

否。不要创建另一个Date2类。您可以采取的一种方法是在构造函数中传递另一个参数,类似于格式。根据传入的字符串类型,可以使用format参数来区分

下面是一个您可以使用的代码片段

定义受支持格式的枚举

public enum DateFormat {DD_MM_YYYY, MM_DD_YYYY};
您的构造函数可以类似于:

public MyDate(String date, DateFormat dateFormat) {
        switch (dateFormat) {
        case DD_MM_YYYY:
            // Do some parsing
            break;
        case MM_DD_YYYY:
            // Do some other passing
            break;
        default:
            // Handle invalid format
            break;
        }


    }

希望有帮助:)

否。不要创建其他Date2类。您可以采取的一种方法是在构造函数中传递另一个参数,类似于格式。根据传入的字符串类型,可以使用format参数来区分

下面是一个您可以使用的代码片段

定义受支持格式的枚举

public enum DateFormat {DD_MM_YYYY, MM_DD_YYYY};
您的构造函数可以类似于:

public MyDate(String date, DateFormat dateFormat) {
        switch (dateFormat) {
        case DD_MM_YYYY:
            // Do some parsing
            break;
        case MM_DD_YYYY:
            // Do some other passing
            break;
        default:
            // Handle invalid format
            break;
        }


    }

希望有帮助:)

正如您所知,不可能有两个具有相同参数类型的构造函数。为了达到预期效果,我建议创建一个标志(甚至可能是
enum
),以指示是否需要格式1格式2

public ClassName(String date, boolean isDMY) {
    if (isDMY) {
        //date is like 25-4-2009, do parsing, saving, etc
    } else {
        //date is in another intended format, for example dd.mm.yyyy, do parsing...
    }
}

请注意,此解决方案可能不是最好的解决方案,但对于只有两种可能的格式的情况,并且您的输入是可信的(例如,您确定构造函数不会用“20051110”之类的字符串调用),则在我看来是可以的。

如您所知,不可能有两个具有相同参数类型的构造函数。为了达到预期效果,我建议创建一个标志(甚至可能是
enum
),以指示是否需要格式1格式2

public ClassName(String date, boolean isDMY) {
    if (isDMY) {
        //date is like 25-4-2009, do parsing, saving, etc
    } else {
        //date is in another intended format, for example dd.mm.yyyy, do parsing...
    }
}

请注意,此解决方案可能不是最好的解决方案,但对于只有两种可能的格式的情况,并且您的输入是可信的(例如,您确保不会使用“20051110”之类的字符串调用构造函数),则在我看来是可以的。

您说过您没有使用
SimpleDataFormat
。听起来你应该(除非这是一个不允许你这样做的赋值)让你的构造函数调用一个方法来解析和格式化如下:

public Date(String date) {
    this.date = formatDate(String dateStr)
}

是一篇关于解析日期的优秀文章。

您说过您没有使用
SimpleDataFormat
。听起来你应该(除非这是一个不允许你这样做的赋值)让你的构造函数调用一个方法来解析和格式化如下:

public Date(String date) {
    this.date = formatDate(String dateStr)
}

是一篇关于解析日期的好文章。

为字符串构造函数使用第二个参数怎么样

MyDate(String date, char formatType)

之后可以使用switch解析日期。

为字符串构造函数使用第二个参数如何

MyDate(String date, char formatType)

您可以在以后使用switch解析日期。

将格式模式传递给构造函数也可能是一个可行的选择。我认为他不想使用SimpeDateFormat可能是出于任何原因,也可能是出于项目或只是玩弄玩乐。@vkg是正确的:)不过,谢谢您的建议,我相信其他人会发现它很有用,也许将来还会用到我!将格式模式传递给构造函数也可能是一个可行的选择。我认为他不想使用SimpeDateFormat可能是出于任何原因的项目或只是玩弄而已。@vkg是正确的:)不过,谢谢你的建议,我相信其他人会发现它很有用,也许将来还会用到我!请看我在上面用代码片段发布的答案:)请看我在上面用代码片段发布的答案:)噢,哇!谢谢我想这正是我所需要的,当你仔细想想的时候,这是有道理的。然而,有一个小问题,我不太确定如何处理。在我的测试程序中,我有一个简单的构造函数初始化器来测试一些样本变量。由于构造函数现在接受两个参数,我必须传入另一个参数,但是我要传入什么?不确定测试程序是什么样子。但是我想您的测试人员应该通过一个可用的枚举值。如果这正是你想要的,请你接受它作为答案:)这是测试仪的一个样本:
。。。日期d2=新日期(“2011年12月29日”);系统输出打印项次(d2)我尝试输入日期d2=新日期(“2011年2月5日”,DD_MM_YYYY)
但是它说构造函数在Eclipse中是未定义的。是的,我会的!:)如果你能发布你的测试程序的代码,这将有助于提供一些建议。另一个链接到pastebin,因为另一个即将过期:p Ooh wow!谢谢我想这正是我所需要的,当你仔细想想的时候,这是有道理的。然而,有一个小问题,我不太确定如何处理。在我的测试程序中,我有一个简单的构造函数初始化器测试