I've looked into this problem a lot and I can't seem to find anyone having the same difficulties. The start time is working fine but the end time is always set to being exactly one hour after the initial start time of the event.
Calendar calStart = Calendar.getInstance();
calStart.set(2014, 02, 04, 13, 20, 0);
Calendar calEnd = Calendar.getInstance();
calEnd.set(2014, 02, 04, 15, 30, 0);
Intent intent = new Intent(Intent.ACTION_INSERT)
.setData(Events.CONTENT_URI)
.putExtra(CalendarContract.EXTRA_EVENT_BEGIN_TIME, calStart.getTimeInMillis())
.putExtra(CalendarContract.EXTRA_EVENT_END_TIME, calEnd.getTimeInMillis())
.putExtra(Events.EVENT_TIMEZONE, TimeZone.getDefault().getID())
.putExtra(Events.TITLE, "TEST")
.putExtra(Events.EVENT_LOCATION, "Location")
.putExtra(Events.AVAILABILITY, Events.AVAILABILITY_BUSY);
startActivity(intent);
I fixed it my using a different implementation.