[time.clock.file.nonmembers] # 30 Time library [[time]](./#time) ## 30.7 Clocks [[time.clock]](time.clock#file.nonmembers) ### 30.7.6 Type file_clock [[time.clock.file]](time.clock.file#nonmembers) #### 30.7.6.3 Non-member functions [time.clock.file.nonmembers] [🔗](#lib:operator%3c%3c,file_time) `template basic_ostream& operator<<(basic_ostream& os, const file_time& t); ` [1](#1) [#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L3423) *Effects*: Equivalent to:return os << format(os.getloc(), *STATICALLY-WIDEN*("{:L%F %T}"), t); [🔗](#lib:from_stream,file_time) `template> basic_istream& from_stream(basic_istream& is, const charT* fmt, file_time& tp, basic_string* abbrev = nullptr, minutes* offset = nullptr); ` [2](#2) [#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L3441) *Effects*: Attempts to parse the input stream is into the file_time tp using the format flags given in the NTCTS fmt as specified in [[time.parse]](time.parse "30.13 Parsing")[.](#2.sentence-1) If the parse fails to decode a valid date,is.setstate(ios_base​::​failbit) is called andtp is not modified[.](#2.sentence-2) If %Z is used and successfully parsed, that value will be assigned to *abbrev if abbrev is non-null[.](#2.sentence-3) If %z (or a modified variant) is used and successfully parsed, that value will be assigned to *offset if offset is non-null[.](#2.sentence-4) Additionally, the parsed offset will be subtracted from the successfully parsed timestamp prior to assigning that difference to tp[.](#2.sentence-5) [3](#3) [#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L3457) *Returns*: is[.](#3.sentence-1)