static tb_bool_t tb_oc_xml_writer_func_date(tb_oc_xml_writer_t* writer, tb_object_ref_t object, tb_size_t level) { // check tb_assert_and_check_return_val(writer && writer->stream, tb_false); // no empty? tb_time_t time = tb_oc_date_time(object); if (time > 0) { // writ beg if (!tb_oc_writer_tab(writer->stream, writer->deflate, level)) return tb_false; if (tb_stream_printf(writer->stream, "<date>") < 0) return tb_false; // writ date tb_tm_t date = {0}; if (tb_localtime(time, &date)) { if (tb_stream_printf(writer->stream, "%04ld-%02ld-%02ld %02ld:%02ld:%02ld" , date.year , date.month , date.mday , date.hour , date.minute , date.second) < 0) return tb_false; } // writ end if (tb_stream_printf(writer->stream, "</date>") < 0) return tb_false; if (!tb_oc_writer_newline(writer->stream, writer->deflate)) return tb_false; } else { // writ if (!tb_oc_writer_tab(writer->stream, writer->deflate, level)) return tb_false; if (tb_stream_printf(writer->stream, "<date/>") < 0) return tb_false; if (!tb_oc_writer_newline(writer->stream, writer->deflate)) return tb_false; } // ok return tb_true; }
static tb_object_ref_t tb_oc_date_copy(tb_object_ref_t object) { return tb_oc_date_init_from_time(tb_oc_date_time(object)); }
static tb_bool_t tb_oc_bplist_writer_func_date(tb_oc_bplist_writer_t* writer, tb_object_ref_t object, tb_size_t item_size) { // check tb_assert_and_check_return_val(writer && writer->stream && object, tb_false); #ifdef TB_CONFIG_TYPE_HAVE_FLOAT // writ date time if (!tb_stream_bwrit_u8(writer->stream, TB_OBJECT_BPLIST_TYPE_DATE | 3)) return tb_false; if (!tb_stream_bwrit_double_bbe(writer->stream, (tb_double_t)tb_oc_bplist_writer_time_host2apple(tb_oc_date_time(object)))) return tb_false; #else tb_assert_and_check_return_val(0, tb_false); #endif // ok return tb_true; }