In this paper we present a reusable time ontology for large-scale knowledge system applications that provides an easily understandable, flexible, formally defined, and effective means of representing knowledge about time. Our underlying time theory treats both time points and time intervals as primitive elements on a time line, and the ontology contains a class hierarchy, relations, axioms and instances built on those primitives. The ontology distinguishes between closed and open intervals, as opposed to many previous time ontologies. However, we provide flexibility of usage by providing two sets of relations on intervals: one that assumes that distinction and one that does not. Time granularity is implemented in the ontology to facilitate representing time in varying granularity in a layered model and switching from or relating one granularity to a coarser or finer one. The ontology also includes a representation of periodic intervals and of the standard components and properties of calendars such as calendar months, calendar days, and weekdays.