0
public class Date { private int m; // month private int d; // day private int y; // year private String month; // string month name ex. "January" private int day; // int day private int year;// year private boolean equals; // make the dates equal public Date(int m, int d, int y) { this.m = m; this.d = d; this.y = y; } public Date(String month, int d, int y) { this.month = month; this.d = d; this.y = y; } public boolean equals(Object other) { if (!(other instanceof Date)) { return false; } Date d2 = (Date) other; if (y == d2.y) { if (m == d2.m) { if (d == d2.d) { return true; } else { return false; } } else { return false; } } else { return false; } } public String toString() { if (m == 1) { return "January " + d + ", " + y; } else if (m == 2) { return "February " + d + ", " + y; } else if (m == 3) { return "March " + d + ", " + y; } else if (m == 4) { return "April " + d + ", " + y; } else if (m == 5) { return "May " + d + ", " + y; } else if (m == 6) { return "June " + d + ", " + y; } else if (m == 7) { return "July " + d + ", " + y; } else if (m == 8) { return "August " + d + ", " + y; } else if (m == 9) { return "Septmember " + d + ", " + y; } else if (m == 10) { return "October " + d + ", " + y; } else if (m == 11) { return "November " + d + ", " + y; } else if (m == 12) { return "December " + d + ", " + y; } else { return month + " " + d + ", " + y; } } } import java.util.Random; public class DateDemo { public static void test(Date d1, Date d2) { if (d1.equals(d2)) { System.out.println("\"" + d1 + "\" matches \"" + d2 + "\""); } else { System.out.println("\"" + d1 + "\" doesn't matche \"" + d2 + "\""); } } public static void main(String[] args) { test(new Date("January", 1, 1970), new Date(1, 1, 1970)); test(new Date("December", 20, 1970), new Date(12, 20, 1971)); test(new Date("July", 15, 1970), new Date(7, 14, 1970)); test(new Date("July", 15, 1970), new Date(7, 15, 1970)); test(new Date("November", 1, 1970), new Date(11, 1, 1970)); test(new Date("April", 1, 1492), new Date(4, 1, 1492)); test(new Date("March", 1, 1970), new Date(1, 1, 1970)); Date d = new Date("January", 1, 1970); if (d.equals(new String("Blah"))) { System.out.println("Should not see me"); } else { System.out.println("Date can only possibly match another Date"); } } } 

Sorry this is my first post I need help on how to convert the month name "january" to an integer "1 " and how to make the dates equal, when I run it it returns that they are dont match.

1
  • Encapsulate your months in an enum, then you can leverage the ordinal method to get an associated integer. Commented Feb 23, 2017 at 20:03

6 Answers 6

2

To convert a month's name to it's integer value you can actually use Month#valueOf method:

Month month = Month.valueOf("January".toUpperCase()); System.out.println(month.getValue() + " : " + month); // 1 : JANUARY 
Sign up to request clarification or add additional context in comments.

Comments

0

To convert the String of the month to an integer you could use a switch statement like this:

public int convert (String month) { int number = 0; //just for the compiler switch(month) { case "January": int = 1 break; case "February": int = 2 break; ... case "December": int = 12 break; } return number; } 

Comments

0

I would make an enum of Months. Then you can use the enum ordinal + 1 to get your integer.

public enum Months { JANURARY, FEBUARY ... } 

Then when you need to get the number that corresponds to the month

Months.JANUARY.ordinal() + 1; 

Comments

0

Use the java.util.Calendar class. It has a get method that you can make use of. For ex: Calendar.get(Calendar.MONTH) which gives you with a value of the date that your calendar instance is representing. You can obtain a Calendar instance by Calendar.getInstance(). This will provide you with a Calendar instance that has a Locale and TimeZone that matches your system time. You also have options to get a customized Locale and TimeZone depending on your needs.

Comments

0

When you create an Date object using Date(String, int, int) constructor you leave its int month value (m variable) default (0 in this case). That's why equal method doesn't give you the result you'd expect it to.

To resolve the problem you simply need to set m variable in the Date(String, int, int) based on given string like this:

public Date(String month, int d, int y) { this.month = month; this.m = monthFromStr(month); this.d = d; this.y = y; } private int monthFromStr(String str) { if(str.equalsIgnoreCase("january")) return 1; // ... throw new IllegalArgumentException("Unknown month!"); } 

Comments

0

you can write helper method to convert your particular string to particular int.

 import java.util.Random; class Date { private int m; // month private int d; // day private int y; // year private String month; // string month name ex. "January" private int day; // int day private int year;// year private boolean equals; // make the dates equal public Date(int m, int d, int y) { this.m = m; this.d = d; this.y = y; } public Date(String month, int d, int y) { this.month = month; this.d = d; this.y = y; } public int converter(String s){ int i=0; if (s.equals("January")){ return 1; } if (s.equals("February")){ return 2; } if (s.equals("March")){ return 3; } if (s.equals("April")){ return 4; } if (s.equals("May")){ return 5; } if (s.equals("June")){ return 6; } if (s.equals("July")){ return 7; } if (s.equals("August")){ return 8; } if (s.equals("Septmember")){ return 9; } if (s.equals("October")){ return 10; } if (s.equals("November")){ return 11; } if (s.equals("December")){ return 12; } return 0; } public boolean equals(Object other) { if (!(other instanceof Date)) { return false; } Date d2 = (Date) other; if (month!=null){ if (y == d2.y) { if (this.converter(month) == d2.m) { if (d == d2.d) { return true; } else { return false; } } else { return false; } } else { return false; } } else { return false; } } public String toString() { if (m == 1) { return "January " + d + ", " + y; } else if (m == 2) { return "February " + d + ", " + y; } else if (m == 3) { return "March " + d + ", " + y; } else if (m == 4) { return "April " + d + ", " + y; } else if (m == 5) { return "May " + d + ", " + y; } else if (m == 6) { return "June " + d + ", " + y; } else if (m == 7) { return "July " + d + ", " + y; } else if (m == 8) { return "August " + d + ", " + y; } else if (m == 9) { return "Septmember " + d + ", " + y; } else if (m == 10) { return "October " + d + ", " + y; } else if (m == 11) { return "November " + d + ", " + y; } else if (m == 12) { return "December " + d + ", " + y; } else { return month + " " + d + ", " + y; } } } public class DateDemo { public static void test(Date d1, Date d2) { if (d1.equals(d2)) { System.out.println("\"" + d1 + "\" matches \"" + d2 + "\""); } else { System.out.println("\"" + d1 + "\" doesn't matche \"" + d2 + "\""); } } public static void main(String[] args) { test(new Date("January", 1, 1970), new Date(1, 1, 1970)); test(new Date("December", 20, 1970), new Date(12, 20, 1971)); test(new Date("July", 15, 1970), new Date(7, 14, 1970)); test(new Date("July", 15, 1970), new Date(7, 15, 1970)); test(new Date("November", 1, 1970), new Date(11, 1, 1970)); test(new Date("April", 1, 1492), new Date(4, 1, 1492)); test(new Date("March", 1, 1970), new Date(1, 1, 1970)); Date d = new Date("January", 1, 1970); if (d.equals(new String("Blah"))) { System.out.println("Should not see me"); } else { System.out.println("Date can only possibly match another Date"); } } } 

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.