【问题标题】:How to combine date and time into a single datetime object?如何将日期和时间组合成一个日期时间对象?
【发布时间】:2020-05-03 16:12:26
【问题描述】:

在我的 react native 应用程序中,我需要将我的日期和时间组合到单个 datetime 对象中。我使用 react native modal date time picker npm package 来获取日期和时间。

我有一个返回日期字符串的日期选择器和一个返回时间字符串的时间选择器。当我尝试合并时,它会给我一个无效日期的输出。

concatDateTime = () => {

    var date = this.state.date;
    var time = this.state.currentTime;

    var dateTime = Moment(date + ' ' + time, 'DD/MM/YYYY HH:mm');

    console.log(dateTime.format('YYYY-MM-DD HH:mm'));
}

我需要 ('YYYY-MM-DDTHH:mm:s') 格式的日期对象。

【问题讨论】:

  • 您能告诉我们您的this.state.datethis.state.currentTime 长什么样吗?
  • this.state.date : 2019-02-16 , this.state.currentTime : 8:24 PM 这些是输出值。

标签: javascript react-native


【解决方案1】:

您可以指定输入字符串的格式,以便让 moment 知道如何解析它。

var date = '2019-02-16';
var time = '8:24 PM';

// tell moment how to parse the input string
var momentObj = moment(date + time, 'YYYY-MM-DDLT');

// conversion
var dateTime = momentObj.format('YYYY-MM-DDTHH:mm:s');

console.log(dateTime);
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.24.0/moment.min.js"></script>

【讨论】:

    【解决方案2】:

    只需点击以下链接, https://stackblitz.com/edit/typescript-bmgx2p?file=index.ts

    希望它能解决你的问题。

    【讨论】:

    • 仍然得到相同的输出。 '无效日期'
    • 让我知道上述解决方案是否有效?
    【解决方案3】:

    另一种选择:

    let mDate = moment(data.StartDateLocal).tz("Australia/Melbourne");
    let mTime = moment(data.StartTimeLocal).tz("Australia/Melbourne");
    let x1 = {
        'hour':    mTime.get('hour'),
        'minute':  mTime.get('minute'),
        'second':  mTime.get('second')
    }                
    mDate.set(x1);
    this._json.header.transactionStartDateTime = mDate.format("YYYY-MM-DDTHH:mm:ss");
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-09-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多