碳 - 标准化日期时间

时间:2017-10-05 03:27:45

标签: php laravel csv php-carbon

我正在开展一些数据迁移流程,其中包含大量CSV

我现在面临的问题是我正在使用的数据文件有2列,即" date"和"时间"。现在,约会本身并没有问题。我的时间"列可以采用任何格式,即H:iH:i:s。无论格式如何,我希望我的输出为d/m/Y H:i:s,如果没有给出秒,则只追加00。

Carbon的createFromFormat要求我指定输入格式是什么,我不能这样做。目前我正在做的是使用Excel根据时间格式将我的CSV文件拆分成不同的文件,然后单独导入它们,但它花了太多时间。

我似乎找不到允许我这样做的功能:

if(getSecondsFromTime){
  Carbon::createFromFormat($string, 'd/m/Y H:i:s');
}else{
  Carbon::createFromFormat($string, 'd/m/Y H:i');
}

Carbon / PHP Datetime是否有一个我不知道的功能可以做到这一点?或者我必须解决正则表达式来做我需要的事情吗?

2 个答案:

答案 0 :(得分:1)

如果您将import matplotlib matplotlib.use('TkAgg') import numpy as np import matplotlib.pyplot as plt import matplotlib.animation as animation fig = plt.figure() def f(x, y): return np.sin(x) + np.cos(y) x = np.linspace(0, 2 * np.pi, 120) y = np.linspace(0, 2 * np.pi, 100).reshape(-1, 1) counter = 0 im = plt.imshow(f(x, y), animated=True) def save_if_error(): print('do other stuff now, e.g. save x and y') def updatefig(*args): global x, y, counter x += np.pi / 15. y += np.pi / 20. im.set_array(f(x, y)) counter += 1 # do something that might fail at one point and catch the error, save the data and continue if counter > 10: b = 0 try: print('bla ' + b) # error except TypeError: print("save the data here") save_if_error() return im, ani = animation.FuncAnimation(fig, updatefig, interval=50, blit=True) plt.show() 替换为/,则-将有效:

Carbon::parse

答案 1 :(得分:0)

在Excel中处理每一行时,请获取日期和时间值。然后使用正则表达式检查时间格式。使用它来指定创建Carbon实例时要使用的格式。

$date = '05/10/2017';
$time = '13:31:00'; // or '13:31'

$format = preg_match('/^\d{2}:\d{2}$/', $time) ? 'd/m/Y H:i' : 'd/m/Y H:i:s');
$datetime = Carbon::createFromFormat("{$date} {$time}", $format);