14

我有一个日期格式19 Oct 2017并想将其转换为这种格式20171019

有没有一种快速的方法来做到这一点?我FlatPickr在 VueJs 中使用。如果有任何帮助,请在下面找到我的代码。

import flatPickr from 'vue-flatpickr-component';
import 'flatpickr/dist/flatpickr.css';
import Navigation from './Navigation'
import bus from '../bus'
export default {
  data() {
    return {
      showPanel: false,
      isClosed: false,
      arrival: null,
      departure: null,
      config: {
        dateFormat: "Ymd"
      }
    }
  },
  components: {
    flatPickr
  },
  methods: {
    closeMenu: function() {
      this.$store.state.showBooking = false;
    }
  },
  mounted() {
    bus.$on('show-booking', () => {
      this.showPanel = true;
    })
  }
}
4

8 回答 8

36

使用时刻

首先,我们需要安装允许更改日期格式的 moment npm 包。

npm install moment

现在您可以创建一个全局函数来设置您想要的格式,为此您必须打开文件resources/js/app.js并输入以下代码:

import moment from 'moment';

Vue.filter('formatDate', function(value) {
    if (value) {
        return moment(String(value)).format('MM/DD/YYYY hh:mm')
    }
});

现在在所有 js 组件中,您可以应用如下格式:

{{ response.create_at | formatDate }}
于 2020-03-13T20:42:56.427 回答
17

您可以轻松地做到这一点:

  import moment from 'moment'

  methods: { 
      format_date(value){
         if (value) {
           return moment(String(value)).format('YYYYMMDD')
          }
      },
   },

然后:

format_date(date)
于 2019-02-13T05:06:52.810 回答
5

另一个不错的选择是使用moment.js lib 来格式化日期,你应该首先通过 npm 在你的项目中安装它npm i --save moment(或者在官方网站上查看更多选项)然后你只需要在你的组件中导入它并更改日期到所需的格式:

import moment from 'moment'
const formattedDate = moment('19 Oct 2017').format('YYYYMMDD')
console.log(formattedDate) //20171019
于 2017-10-13T03:26:16.130 回答
4

您可以通过使用您的字符串创建新的 Date 对象来做到这一点。

var date = new Date("19 Oct 2017");

var result = "" + date.getFullYear() + ((date.getMonth() + 1) > 9 ? '' : '0') + (date.getMonth() + 1) + (date.getDate() > 9 ? '' : '0') + date.getDate();

console.log(result)

于 2017-10-12T11:19:17.587 回答
2

您可以以与解析器大致相同的方式分解字符串,但避免创建日期,然后格式化部分。这将避免内置日期解析器的变幻莫测:

function reformatDate(s) {
  function z(n){return ('0'+n).slice(-2)}
  var months = [,'jan','feb','mar','apr','may','jun',
                 'jul','aug','sep','oct','nov','dec'];
  var b = s.toLowerCase().split(' ');
  return b[2] + z(months.indexOf(b[1])) + z(b[0]);
}

console.log(reformatDate('19 Oct 2017'));
console.log(reformatDate('1 Jan 2017'));

于 2017-10-12T12:04:53.400 回答
0

TL;博士

new Date('19 Oct 2017').toISOString().substr(0,10).replace(/-/g, '') // returns '20171018'

请参阅 MDN日期字符串文档

解释器:

// Get Date Object
const dateObject = new Date('19 Oct 2017').toISOString()
// Get the Year, month, day substring 
const rawDateString = dateObject.substr(0,10)
// Remove the hyphens
rawDateString.replace(/-/g, '') // returns '20171018'

对于 hacky,额外的格式,您可以用连字符分割日期字符串。根据需要安排日期:

let h = new Date('19 Oct 2017').toISOString().substr(0,10).split(/-/)
new Array(h[1], h[0], h[2]).join('-') // returns '10-2017-18'
于 2021-07-15T17:45:02.250 回答
0

您可以使用es6 DestructuringtoLocalDateString本地时间,可以像这样遵循:

const twoDigit = (digit) => digit > 9 ? digit : "0" + digit
const [month, day, year] = new Date().toLocaleDateString().split("\/")
  .map(e => twoDigit(e));
console.log(year + month + day);

注意:您也可以使用new Date().toLocaleTimeString().substring(0,8).split(":")来获取数组中的时间分量

于 2021-07-15T17:57:57.783 回答
0

我在 vue js 中提出了这段代码,你可以使用这种方式

var first_time = '09:00:00'
var today = new Date()
var now_time = (today.getHours() + ":" + today.getMinutes() + ":" + today.getSeconds()).toString()

if (now_time === first_time){
console.log('true')
}else(){
console.log('false')
}
于 2021-11-08T08:28:36.673 回答