OK, so my code has worked good until the day became Sunday.
I'm working on an app that uses the Calendar util allot, so it functioning the way i think it does is important to me! The problem:
import java.util.Calendar;
...
Calendar test = Calendar.getInstance();
test.setFirstDayOfWeek(Calendar.MONDAY);
Log.e("WEEEK TEST:", ""+ test.get(Calendar.WEEK_OF_YEAR));
test.add(Calendar.WEEK_OF_YEAR, 1);
Log.e("WEEEK TEST:", ""+ test.get(Calendar.WEEK_OF_YEAR));
Outputs this:
06-01 14:04:07.636 12005-12005/test.app E/WEEEK TEST:﹕ 23
06-01 14:04:07.636 12005-12005/test.app E/WEEEK TEST:﹕ 23
How can this even happen, and how do i fix it?
Calendar test = Calendar.getInstance();
test.add(Calendar.WEEK_OF_YEAR, -1);
test.add(Calendar.WEEK_OF_YEAR, 1);
test.setFirstDayOfWeek(Calendar.MONDAY);
Now "test" should work correctly
Related
i'm using DatePickerDialog to select time on my app. When I run my app on a device with Android 5 as OS the dialog shows properly, meanwhile if i run my app on a device with Android 6 this is what the dialog looks like:
Could someone help me?
I solved the issue changing the way that the TimePickerDialog was being created.
I had this code :
Calendar c = Calendar.getInstance();
return new TimePickerDialog(getContext(), myTimeListener, c.get(Calendar.HOUR_OF_DAY), c.get(Calendar.MINUTE), true);
I changed the 2nd line for this one:
Calendar c = Calendar.getInstance();
return new TimePickerDialog(getContext(), R.style.AppTheme, myTimeListener, c.get(Calendar.HOUR_OF_DAY), c.get(Calendar.MINUTE), true);
something strange happened. I'm using Calendar to name the audiofiles I'm recording. Everything was working ok until today. The next code is giving me the date in birmanian, I don't know why.
The code is simple:
Calendar cal = Calendar.getInstance();
cal.add(Calendar.DATE, 1);
SimpleDateFormat format1 = new SimpleDateFormat("HH;mm;ss[,[dd-MM-yyyy");
String formatted = format1.format(cal.getTime());
(I'm using all the "; , [ and more strange characters to create the file after, it is not the cause of the problem it worked well few days ago)
what I'm getting is:
formatted = ၁၃;၅၃;၂၅[,[၃၁-၀၅-၂၀၁၆
Any help?
Thanks for your time!
I would like to ask, that is possible to add calendar event without calling the Google Calendar API (need internet connection) or Starting Native Calendar activity (is unnecessary)? Just add calendar event into device native calendar (no reading, filtering, etc..)
Many thanks for any advice
I think what you are looking for is the CalendarProvider. (See also ContentProviders)
You can use it to read, write, update, and delete calendar events. Although you will need the calendar permissions:
<uses-permission android:name="android.permission.READ_CALENDAR" />
<uses-permission android:name="android.permission.WRITE_CALENDAR" />
You can then just use the users calendar or create your own.
Yes it is possible to start native calender activity .
Intent calendarIntent = new Intent(Intent.ACTION_INSERT, Events.CONTENT_URI);
Calendar beginTime = Calendar.getInstance().set(2012, 0, 19, 7, 30);
Calendar endTime = Calendar.getInstance().set(2012, 0, 19, 10, 30);
calendarIntent.putExtra(CalendarContract.EXTRA_EVENT_BEGIN_TIME, beginTime.getTimeInMillis());
calendarIntent.putExtra(CalendarContract.EXTRA_EVENT_END_TIME, endTime.getTimeInMillis());
calendarIntent.putExtra(Events.TITLE, "Ninja class");
calendarIntent.putExtra(Events.EVENT_LOCATION, "Secret dojo");
Now start above activity. Hope it helps.
I wanted to change timezone in android programmatically like to set timezone as "America/Los_Angeles". How can I do this. How can this be possible by using id's.
In your AndroidManifest.xml
<uses-permission android:name="android.permission.SET_TIME_ZONE"/>
In your source:
AlarmManager am = (AlarmManager) getContext().getSystemService(Context.ALARM_SERVICE);
am.setTimeZone("America/Los_Angeles");
Abhishek's code simply defines a Calendar instance with a specific format to be used in the app, so that will not work.
It is not possible to change the phone's timezone programmatically.
You could redirect the user to the appropriate settings, however:
startActivity(new Intent(android.provider.Settings.ACTION_DATE_SETTINGS));
If this is on a simulator or a device that you have root on, you could run
adb shell "su -c 'setprop persist.sys.timezone America/Los_Angeles; stop; sleep 5; start'"
Calendar calendar = Calendar.getInstance();
SimpleDateFormat sdf = new SimpleDateFormat("dd-MMM-yyyy hh:mm:ss z");
sdf.setTimeZone(TimeZone.getTimeZone("America/Los_Angeles"));
System.out.println(sdf.format(calendar.getTime()));
Source
You should have system signatures for setting timezones. if you are not manifacturer for your device may be you can contact them and ask for keystore files. after that you can sign your app as system with keystore file.
I'm using following code in my app:
Calendar tmpCalendar = Calendar.getInstance(Locale.getDefault());
String itemTime = String.format(
Locale.getDefault(),
"%1$tA, %1$te. %1$tB %1$tY",
tmpCalendar);
German is the default language on my device, so I'd expect to get something like:
Dienstag, 7. Juni 2011
Instead I'm getting:
3, 7. 6 2011
If I use Locale.US instead of Locale.getDefault() everything works fine. Am I doing something wrong?
Oddly, it works in an emulator running Android 2.2 in German, but not on a HTC Desire, also running 2.2. Why?
It seems to be a bug of some vendors and is issue #9453 in the Android issue tracker.
SimpleDateFormat sdf = new SimpleDateFormat("EE/MM/yyyy");
Date date = new Date();
String sDate= sdf.format(date);
Read more on it here
It does exactly what you ask it to do. If you want to have fine-grain control over the process, you can always use SimpleDateFormat. However, I would rather recommend this method:
Calendar tmpCalendar = Calendar.getInstance(Locale.getDefault());
DateFormat formatter = DateFormat.getDateInstance(DateFormat.LONG, Locale.getDefault());
formatter.setTimeZone(TimeZone.getDefault());
String itemTime = formatter.format(tmpCalendar.getTime());
Also, I would recommend using DateFormat.DEFAULT but you expect long date format, so...