抛出错误RangeError:将自定义日期设置为react-datepicker的DatePicker时,时间值无效

时间:2019-08-21 14:40:10

标签: javascript reactjs datepicker momentjs react-datepicker

我正在尝试将所选参数设置为react-datepicker的DatePicker的默认日期。从数据库中获取的日期基本上是以下格式:

event_date: "2019-06-15"

当我设置状态时,该日期以这种方式显示-event_date: "2019-06-15T00:00:00"

我已尝试new Date()将其转换为JavaScript兼容日期。还尝试了MomentJS,但同时抛出了同样的错误。当我在new Date()参数中调用selected时,一切运行正常。我的意思是,DatePicker显示默认的今天日期。但是,当我尝试将自定义日期值设置为DatePicker时,会引发错误-RangeError: Invalid time value

有人可以告诉我DatePicker设置自定义日期需要哪种类型的数据?

3 个答案:

答案 0 :(得分:3)

您的日期似乎是import cv2 import os import json import numpy as np from IPython import embed import tensorflow as tf from object_detection.utils import dataset_util json_path = "/home/deploy/ved/train.json" out_path = "/home/deploy/ved/out" commodity_lst = ["tomato"] writer = tf.python_io.TFRecordWriter("train.record") target_size = 1200 label_map = "/home/deploy/ved/label_map.pbtxt" write_label_map = True category = ['tomato'] category_index = {k:v for k,v in zip(range(1,len(category)+1), category)} with open(json_path, 'r') as f: data = json.load(f) if write_label_map: with open(label_map, "w") as f_pbtxt: for k,v in category_index.items(): f_pbtxt.write("item{{\n\tid: {}\n\tname: '{}'\n}}\n".format(k,v)) def checkJPG(fn): with tf.Graph().as_default(): try: image_contents = tf.read_file(fn) image = tf.image.decode_jpeg(image_contents, channels=3) init_op = tf.initialize_all_tables() with tf.Session() as sess: sess.run(init_op) tmp = sess.run(image) except: print("Corrupted file: ", fn) return False return True def getSquareImage( img, target_width = 500 ): width = img.shape[1] height = img.shape[0] square = np.zeros( (target_width, target_width, 3), dtype=np.uint8 ) max_dim = width if width >= height else height scale = target_width / max_dim if ( width >= height ): width = target_width x = 0 height = int(height * scale) y = int(( target_width - height ) / 2) else: y = 0 height = target_width width = int(width * scale) x = int(( target_width - width ) / 2) # embed() square[y:y+height, x:x+width] = cv2.resize( img , (width, height) ) return square, x, y, scale for key in data: img = cv2.imread(os.path.join("/home/deploy/ved/dataset", data[key]["filename"])) if checkJPG(os.path.join("/home/deploy/ved/dataset", data[key]["filename"])): _img, _x, _y, _scale = getSquareImage(img, target_size) encoded_jpg = cv2.imencode('.jpg', _img)[1].tostring() filename = tf.compat.as_bytes(data[key]["filename"]) image_format = b'jpg' xmins = [] xmaxs = [] ymins = [] ymaxs = [] classes_text = [] classes = [] width = _img.shape[1] height = _img.shape[0] for j in range(len(data[key]["regions"])): x_lst = np.asarray(data[key]["regions"][j]["shape_attributes"]["all_points_x"]) y_lst = np.asarray(data[key]["regions"][j]["shape_attributes"]["all_points_y"]) xmin = int(np.amin(x_lst)*_scale) + _x xmax = int(np.amax(x_lst)*_scale) + _x ymin = int(np.amin(y_lst)*_scale) + _y ymax = int(np.amax(y_lst)*_scale) + _y cv2.rectangle(_img, (xmin, ymin), (xmax, ymax), (255,0,0), 2) try: _commodity = [i for i in commodity_lst if i in data[key]["regions"][j]["region_attributes"]][0] except: print("commodity name not in list") embed() if _commodity == data[key]["regions"][j]["region_attributes"][_commodity]: text = _commodity try: index = [k for k,v in category_index.items() if v == text.strip()][0] except: print("one tagged catogory not in list") embed() xmins.append( xmin / width) xmaxs.append( xmax / width) ymins.append( ymin / height) ymaxs.append( ymax / height) classes_text.append(tf.compat.as_bytes(text)) classes.append(index) # cv2.putText(_img, text, (xmin, ymin), cv2.FONT_HERSHEY_SIMPLEX, 1.0, (255, 255, 255), lineType=cv2.LINE_AA) # _path = os.path.join(out_path, os.path.splitext(data[key]["filename"])[0]+"_ann"+os.path.splitext(data[key]["filename"])[1]) # cv2.imwrite(_path, _img) tf_example = tf.train.Example(features=tf.train.Features(feature={ 'image/height': dataset_util.int64_feature(height), 'image/width': dataset_util.int64_feature(width), 'image/filename': dataset_util.bytes_feature(filename), 'image/source_id': dataset_util.bytes_feature(filename), 'image/encoded': dataset_util.bytes_feature(encoded_jpg), 'image/format': dataset_util.bytes_feature(image_format), 'image/object/bbox/xmin': dataset_util.float_list_feature(xmins), 'image/object/bbox/xmax': dataset_util.float_list_feature(xmaxs), 'image/object/bbox/ymin': dataset_util.float_list_feature(ymins), 'image/object/bbox/ymax': dataset_util.float_list_feature(ymaxs), 'image/object/class/text': dataset_util.bytes_list_feature(classes_text), 'image/object/class/label': dataset_util.int64_list_feature(classes), })) writer.write(tf_example.SerializeToString()) writer.close() 格式。 string不接受字符串日期。

您需要使用parseISO

将字符串日期解析为实际日期
Datepicker

用法

import { parseISO } from 'date-fns' 

答案 1 :(得分:2)

React-datepicker需要传递Date的实例以用于配置值,例如startDate等(或者可能还包括时间戳整数,不确定)。

您可以使用

new Date(Date.parse("2019-06-15T00:00:00"));

创建日期实例。 Date.parse()可以识别许多日期字符串格式,并将它们转换为Date()构造函数可以接受的时间戳值。

答案 2 :(得分:0)

您可以在 Javascript 中使用最新的 date-fns 库并使用下面的格式

import { format, parseISO } from 'date-fns' 

format(parseISO(DateinISOformat), "MMM dd h:m a") 

下面的例子 -

format(parseISO('2019-06-15T00:00:00'), "MMM dd h:m a")