0

I'm trying to use a Date String to select a string to be displayed in my android app.

The Code im using to GET Date:

Calendar TextCalendar = Calendar.getInstance();
SimpleDateFormat DateFormat = new SimpleDateFormat("yyyy-MM-dd", Locale.ENGLISH);
String TextDate = DateFormat.format(TextCalendar.getTime());

The Code im imagining I need to select strings:

TextView MyTextView = (TextView) findViewByID(R.id.my_text_view);
MyTextView.setText (  "DateVariable" + "Comment"   )

This code I imagine not to work because I tried but, the bit with "DateVariable" And "Comment" means I could have Strings in Strings.xml Named Each Date but I would have 2 Strings for each day because there is a TITLE String and A Comment String, so i could imagine the string names looking like this

<string name="2016-02-28-TITLE">TESTING20160228</string>
<string name="2016-02-28-COMMENT">TESTING20160228Comment</string>
<string name="2016-02-29-TITLE">....
and so on

If anyone has a better suggestion on how to proceed with this it would be greatly appreciated.

Thanks ~Alexander

TheAlex
  • 5
  • 3

2 Answers2

2

Try this:

String s = TextDate + "-Comment";
getString(getResources().getIdentifier(s, "string", getPackageName()));
MElkady
  • 163
  • 10
  • Thanks, This worked for me. now if i still wanted to ask questions on how I should proceed with my app should I create a new thread, or just ask them in this one? – TheAlex Feb 28 '16 at 07:37
  • If it's not related to the same point, I think you should create a new thread – MElkady Feb 28 '16 at 07:42
0

Time Zone

Determining the current date requires a time zone. The date is not simultaneously the same around the world. A new day dawns earlier in the east. For example, in the first few minutes after midnight in Paris, it is still “yesterday” in Montréal.

If omitted, your JVM’s current default time zone is implicitly applied. That default can may vary, even during runtime! Better to be explicit with your desired/expected time zone.

java.time

You are using old date-time classes that have been supplanted by the java.time framework built into Java 8 and later. Much of java.time is back-ported to Java 6 & 7 and further adapted to Android.

These java.time classes include the LocalDate class for date-only values lacking a time-of-day and time zone.

ZoneId z = ZoneId.of( "America/Montreal" );
LocalDate today = LocalDate.now( z );

Your desired textual format complies with the ISO 8601 standard. The java.time classes use ISO 8601 by default when parsing/generating strings.

String output = today.toString() + "-Comment";

Java Naming

By the way, the code in your Question does not follow naming conventions. Class names should start with an uppercase while instance variable names should start with a lowercase.


About java.time

The java.time framework is built into Java 8 and later. These classes supplant the troublesome old legacy date-time classes such as java.util.Date, Calendar, & SimpleDateFormat.

The Joda-Time project, now in maintenance mode, advises migration to java.time.

To learn more, see the Oracle Tutorial. And search Stack Overflow for many examples and explanations. Specification is JSR 310.

Where to obtain the java.time classes?

  • Java SE 8 and SE 9 and later
    • Built-in.
    • Part of the standard Java API with a bundled implementation.
    • Java 9 adds some minor features and fixes.
  • Java SE 6 and SE 7
    • Much of the java.time functionality is back-ported to Java 6 & 7 in ThreeTen-Backport.
  • Android

The ThreeTen-Extra project extends java.time with additional classes. This project is a proving ground for possible future additions to java.time. You may find some useful classes here such as Interval, YearWeek, YearQuarter, and more.

Community
  • 1
  • 1
Basil Bourque
  • 303,325
  • 100
  • 852
  • 1,154
  • Thanks Basil!, so if i set it to local date it will be using the date from the device? – TheAlex Feb 28 '16 at 19:32
  • And yes i realise it should be lowercase, i am slowly changing it to get off my bad habbits :P – TheAlex Feb 28 '16 at 19:32
  • And also how would the code you provided output the date, I specifically need it to output like this "comment_2016_02_29" the reason why I changed it from my previous code was a. strings need a character as their first naming identifier b. strings cannot contain "-", so I changed to "_" – TheAlex Feb 28 '16 at 19:37
  • @TheAlex Your Question does not say anything about underscores. You should edit your Question with additional information and requirements rather than post comments. In java.time use `DateTimeFormatter.ofPattern` to define such a format as shown in many other Questions/Answers. – Basil Bourque Feb 29 '16 at 06:19
  • @TheAlex I did not notice your Android tag. Android does not yet have Java 8 technology so you do not have java.time. You could try the JSR 310 backport project, or use the Joda-Time library which is quite similar (and which inspired JSR 310 / java.time). In either case, the code would be quite similar to that shown in my Answer. – Basil Bourque Feb 29 '16 at 06:22