다음과 같은 의도로 이벤트를 로컬 캘린더로 내보내려고합니다.
Intent intent = new Intent(Intent.ACTION_EDIT);
intent.setType("vnd.android.cursor.item/event");
intent.putExtra("beginTime", 1407880800000);
intent.putExtra("allDay", false);
intent.putExtra("endTime", 1408053600000);
intent.putExtra("title", helper.events.get(position).optString("name"));
intent.putExtra("description", helper.events.get(position).optString("description"));
intent.putExtra("eventLocation", helper.events.get(position).optString("address"));
intent.putExtra("eventTimezone", TimeZone.getTimeZone("GMT"));
startActivity(intent);
날짜는 유닉스 타임 스탬프에서 밀리 초로 변환되며 2014 년 8 월 12 일 22:00:00에 시작하여 2014 년 8 월 14 일 22:00:00 에 종료 되어야 합니다. 하지만 달력에 삽입 할 때마다 시간에 +2 시간이 더해 지므로 13 일은 00:00:00이고 종료 시간은 15 일 00:00:00입니다.
정확한 시간을 입력하려면 어떻게해야합니까?
편집 : 시간대를 제거하거나 다른 것으로 변경하면 GMT는 아무것도하지 않습니다.
결국 내가 가진 밀리 초를 문자열로 변환 한 다음 simpledateformat을 사용하고 다시 밀리 초로 변환하여 기본 시간대를 simpledateformat에 추가해야했습니다. 이렇게 :
public void exportEventToCalendar() {
try {
SimpleDateFormat startFormat = new SimpleDateFormat(getString(R.string.date_format));
startFormat.setTimeZone(TimeZone.getDefault());
Date dateS = startFormat.parse(Methods.getMethods().getDate(getActivity(), helper.events.get(position).optLong("starts"), R.string.date_format));
long start = dateS.getTime();
SimpleDateFormat endFormat = new SimpleDateFormat(getString(R.string.date_format));
endFormat.setTimeZone(TimeZone.getDefault());
Date dateE = endFormat.parse(Methods.getMethods().getDate(getActivity(), helper.events.get(position).optLong("ends"), R.string.date_format));
long end = dateE.getTime();
Log.e("Start", "" + start);
Log.e("Ends", "" + end);
Intent intent = new Intent(Intent.ACTION_EDIT);
intent.setType("vnd.android.cursor.item/event");
intent.putExtra(CalendarContract.EXTRA_EVENT_BEGIN_TIME, start);
intent.putExtra(CalendarContract.EXTRA_EVENT_ALL_DAY, false);
intent.putExtra(CalendarContract.EXTRA_EVENT_END_TIME, end);
intent.putExtra(CalendarContract.Events.TITLE, helper.events.get(position).optString("name"));
intent.putExtra(CalendarContract.Events.DESCRIPTION, helper.events.get(position).optString("description"));
intent.putExtra(CalendarContract.Events.EVENT_LOCATION, helper.events.get(position).optString("address"));
startActivity(intent);
} catch (ParseException e) {
e.printStackTrace();
}
}
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다