Javascript 创建一个;“修改日期”;React--Edit中的值:更新为工作代码
我需要获取修改值的日期/时间,以便在状态下更新它,然后通过上下文将其推送到App.js中的addNote函数。json服务器的一个示例是“2019-01-03T00:00:00.000Z”,因此我需要日期和时间来匹配此格式Javascript 创建一个;“修改日期”;React--Edit中的值:更新为工作代码,javascript,reactjs,time,Javascript,Reactjs,Time,我需要获取修改值的日期/时间,以便在状态下更新它,然后通过上下文将其推送到App.js中的addNote函数。json服务器的一个示例是“2019-01-03T00:00:00.000Z”,因此我需要日期和时间来匹配此格式 export class AddNote extends Component { state = { id: '', name: '', modified: '', folderId: '',
export class AddNote extends Component {
state = {
id: '',
name: '',
modified: '',
folderId: '',
content: ''
}
static contextType = Context;
handleChange = (e) => {
const { modified } = e.target.dataset.modified; <---------
this.setState({
id: e.target.id,
name: e.target.value,
modified: {modified},
folderId: e.target.dataset.folderId
})
}
导出类AddNote扩展组件{
状态={
id:“”,
名称:“”,
已修改:“”,
folderId:“”,
内容:“”
}
静态上下文类型=上下文;
handleChange=(e)=>{
const{modified}=e.target.dataset.modified;您正在寻找一个ISO字符串,该字符串表示vanilla JS中的datetime对象。拥有datetime对象后,您可以调用下面的来正确输出上面的内容
const event = new Date('05 October 2011 14:48 UTC');
console.log(event.toString());
// expected output: Wed Oct 05 2011 16:48:00 GMT+0200 (CEST)
// (note: your timezone may vary)
console.log(event.toISOString());
// expected output: 2011-10-05T14:48:00.000Z
下面是Mozilla文档的链接,其中描述了这一点
在考虑事件、日志记录、度量或其他任何内容的时间戳时,需要注意一件事。尽早决定保存时间戳数据的格式,并坚持使用该格式,经过反复试验后,符合ISO8601标准的时间戳(包括尽可能多的有关偏移量的信息)是一个很好的起点。否则时区管理的一致性将在以后成为一个问题。您正在寻找一个ISO字符串,该字符串表示vanilla JS中的datetime对象。一旦您有了datetime对象,您可以调用下面的来正确输出上面的内容
const event = new Date('05 October 2011 14:48 UTC');
console.log(event.toString());
// expected output: Wed Oct 05 2011 16:48:00 GMT+0200 (CEST)
// (note: your timezone may vary)
console.log(event.toISOString());
// expected output: 2011-10-05T14:48:00.000Z
下面是Mozilla文档的链接,其中描述了这一点
在考虑事件、日志记录、度量或其他任何内容的时间戳时,需要注意一件事。尽早决定保存时间戳数据的格式,并坚持使用该格式,经过反复试验后,符合ISO8601标准的时间戳(包括尽可能多的有关偏移量的信息)是一个很好的起点。否则时区管理的一致性将在以后成为一个问题。需要注意的是:
const{modified}=e.target.modified.toISOString()需要注意的事项:
const{modified}=e.target.modified.toISOString()您希望与服务器返回的日期时间匹配的日期时间在哪里?是this.state.modified
?这是我刚刚意识到的问题的另一半。我可以按照下面的回答转换它,但首先我需要获取值以开始好的,这实际上是我想要的…值。关于如何创建的建议它没有为用户手动输入日期创建字段?这很简单。您只需创建一个新日期()
这将返回当前日期和时间。如果用户正在输入一些数据,只需等待他们提交,当您绑定模型时,您将为日期创建一个额外字段,并使用新日期()
创建一个日期的实例。然后您可以使用该(新日期()).toISOString()
转换。但显然,您会将其存储到一个变量中。您希望与服务器返回的日期时间匹配的日期时间在哪里?是否是this.state.modified
?这是我刚刚意识到的问题的另一半。我可以按照下面的回答进行转换,但首先我需要获取值以开始,好吗这就是我想要的…值。关于如何创建它,而不需要为用户手动输入日期创建字段,有什么建议吗?这很简单。您只需创建一个新日期()
这将返回当前日期和时间。如果用户正在输入一些数据,只需等待他们提交,当您绑定模型时,您将为日期创建一个额外字段,并使用新日期()
创建一个日期的实例。然后您可以使用该(新日期()).toISOString()
转换它。但是很明显,你会将它存储到一个变量中,让它工作起来!这是几件事情的组合,显然你必须先转换日期,然后再传递它。dat-和dataset方法解决了不识别“this.modified”的问题。我更新了OP以表示工作代码。我不确定为什么在赋值之前需要进行转换,因为它作为字符串存储在属性上,因此不会产生任何影响。但我很高兴您找到了解决方案。(显然这是一个bug)。但是,是的,现在一切都正常。感谢您的帮助。它正常工作了!这是几件事的组合,显然在传递日期之前必须先转换日期。dat和dataset方法解决了无法识别“this.modified”的问题。我更新了OP以表示工作代码。我不确定为什么在分配值之前必须进行转换,因为它在属性上存储为字符串,因此不会产生任何影响。但我很高兴您找到了解决方案。(显然这是一个bug)。但是,是的,现在一切都正常了。谢谢您的帮助
constructor(props)
{
super(props);
this.handleChange = this.handleChange.bind(this);
}
<input
type="text"
id={id}
value={this.state.name}
data-folderId={folderId} // add data-
data-modified={date} <------------ //add data-
onChange={this.handleChange}
/>