Lines Matching refs:dtstr
737 parse_isoformat_date(const char *dtstr, const size_t len, int *year, int *month, int *day)
749 const char *p = dtstr;
771 assert(p > dtstr);
772 if ((size_t)(p - dtstr) < len) {
875 parse_isoformat_time(const char *dtstr, size_t dtlen, int *hour, int *minute,
888 const char *p = dtstr;
889 const char *p_end = dtstr + dtlen;
898 int rv = parse_hh_mm_ss_ff(dtstr, tzinfo_pos, hour, minute, second,
3058 date_fromisoformat(PyObject *cls, PyObject *dtstr)
3060 assert(dtstr != NULL);
3062 if (!PyUnicode_Check(dtstr)) {
3070 const char *dt_ptr = PyUnicode_AsUTF8AndSize(dtstr, &len);
3092 PyErr_Format(PyExc_ValueError, "Invalid isoformat string: %R", dtstr);
5273 _sanitize_isoformat_str(PyObject *dtstr)
5275 Py_ssize_t len = PyUnicode_GetLength(dtstr);
5286 const void* const unicode_data = PyUnicode_DATA(dtstr);
5287 const unsigned int kind = PyUnicode_KIND(dtstr);
5311 Py_INCREF(dtstr);
5312 return dtstr;
5315 PyObject *str_out = _PyUnicode_Copy(dtstr);
5330 _find_isoformat_datetime_separator(const char *dtstr, Py_ssize_t len) {
5365 if (dtstr[4] == date_separator) {
5368 if (dtstr[5] == week_indicator) {
5375 if (len > 8 && dtstr[8] == date_separator) {
5378 if (len > 10 && is_digit(dtstr[10])) {
5401 if (dtstr[4] == week_indicator) {
5406 if (!is_digit(dtstr[idx])) {
5429 datetime_fromisoformat(PyObject *cls, PyObject *dtstr)
5431 assert(dtstr != NULL);
5433 if (!PyUnicode_Check(dtstr)) {
5444 PyObject *dtstr_clean = _sanitize_isoformat_str(dtstr);
5516 PyErr_Format(PyExc_ValueError, "Invalid isoformat string: %R", dtstr);