Javascript - 将语言环境日期时间解析为我们的日期时间格式

时间:2018-01-10 19:15:51

标签: javascript jquery

您好我想将日期时间从语言环境格式解析为英语格式(对于.NET REST API服务器)。我使用jquery datetimepicker:

jQuery(document).ready(function () {
    'use strict';
    jQuery.datetimepicker.setLocale('cs');
    jQuery('#startDate').datetimepicker({
        format: 'd.m.Y H:i',
    });
});

<input ng-model="$ctrl.startDate" class="form-control" id="startDate" datetime-picker/>

在datetimepicker中我有这个日期10.01.2018 20:15(2018年1月10日),我需要转换为2018/01/10 20:15。此格式正确发送到.NET服务器。如何改造?

我需要帮助。我以这种格式从服务器获取日期:2018-01-10T20:15:00我希望以这种格式在datetimepicker中显示:10.01.2018 20:15如何转换它?

谢谢

2 个答案:

答案 0 :(得分:1)

通过转换,您尝试转换为不适用于所有浏览器的格式。

要完成此操作,您可以按正则表达式进行拆分,在这种情况下/\:|\s|\./g可以按任意.:或空格进行拆分。然后,您可以再次建立您的初始日期。请注意,您将丢失秒数,因为初始转换中不包括秒数。

var dateStr = '2018.01.10 08:15'
var arr = dateStr.split(/\:|\s|\./g)
var finalDate = arr[0] + '-' + arr[1] + '-' + arr[2] + 'T' + arr[3] + ':' + arr[4] + ':00'
console.log(finalDate)
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.17.1/moment.min.js"></script>

答案 1 :(得分:1)

您可以编写一个简单的解析器来获取日期字符串的组件,然后创建一个new Date并返回所需的格式。

&#13;
&#13;
const datestr = '10.01.2018 20:15'

// prepend zero if less than 10
const z = x => x > 9 ? x : '0' + x

// parse formatted date into server date
const parse = str => {
  const [day, month, year, hour, min] = str.split(/\.|\s|\:/)
  const date = new Date(year, month - 1, day, hour, min)
  const y = z(date.getFullYear())
  const m = z(date.getMonth() + 1)
  const d = z(date.getDate())
  const h = z(hour)
  const mn = z(min)
  return `${y}-${m}-${d}T${h}:${mn}:00`
}

console.log(
  parse(datestr)
)
&#13;
&#13;
&#13;