如何将Rails%d/%m/%Y日期格式字符串转换为dd/mm/yyyy
How to convert Rails %d/%m/%Y date format string to dd/mm/yyyy?
我在Rails初始化器中定义了以下日期格式:
Date::DATE_FORMATS[:default] = '%d/%m/%Y'
我想将这个日期格式字符串(不是实际的日期对象)传递给一个基于JavaScript的日期选择器小部件。但是,日期选择器只接受没有%
的格式字符串。例如,如果要将上面的日期格式字符串传递给小部件,则需要将其转换为dd/mm/YYYY
。
我能做转换的最简单的方法是什么?或者有没有一种我甚至不需要的方式?
这将使您能够将从数据选择器中选择的日期保存到数据库中,因为它将使用日期轨道格式
$(".date-single-view").datepicker({
dateFormat: "yyyy-mm-dd"
});
您可以使用strftime()方法例如d1.strftime('%d/%m/%Y');
有关更多详细信息,您可以查看此链接strftime
使用映射和支持函数替换的regex方法可以最容易地完成这类操作。
来自日期选择器文档:
format
String. Default: “mm/dd/yyyy”
The date format, combination of d, dd, D, DD, m, mm, M, MM, yy, yyyy.
d, dd: Numeric date, no leading zero and leading zero, respectively. Eg, 5, 05.
D, DD: Abbreviated and full weekday names, respectively. Eg, Mon, Monday.
m, mm: Numeric month, no leading zero and leading zero, respectively. Eg, 7, 07.
M, MM: Abbreviated and full month names, respectively. Eg, Jan, January
yy, yyyy: 2- and 4-digit years, respectively. Eg, 12, 2012.
在Ruby中(请参阅strftime格式):
STRFTIME_TO_DATEPICKER = {
'-d' => 'd', # numeric date, no leading zero
'd' => 'dd', # numeric date, with leading zero
'a' => 'D', # abbreviated weekday name (e.g., Mon)
'A' => 'DD', # full weekday name (e.g., Monday)
'-m' => 'm', # numeric month, no leading zero
'm' => 'mm', # numeric month, with leading zero
'b' => 'M', # abbreviated month name (e.g., Jan)
'B' => 'MM', # full month name (e.g., January)
'y' => 'yy', # 2-digit year
'Y' => 'yyyy' # 4-digit year
}
puts '%d/%m/%Y'.gsub(/%(-?[dmyab])/i) { |match| STRFTIME_TO_DATEPICKER[$1] || match }
# => dd/mm/yyyy
puts '%d %-d %a %A %-m %m %b %B %y %Y %M %w'.gsub(/%(-?[dmyab])/i) { |match| STRFTIME_TO_DATEPICKER[$1] || match }
# => dd d D DD m mm M MM yy yyyy %M %w
在JavaScript中:
var convert_ruby_strftime_to_datepicker_format = (function () {
var format_conversions = {
'-d': 'd', // numeric date, no leading zero
'd' : 'dd', // numeric date, with leading zero
'a' : 'D', // abbreviated weekday name (e.g., Mon)
'A' : 'DD', // full weekday name (e.g., Monday)
'-m': 'm', // numeric month, no leading zero
'm' : 'mm', // numeric month, with leading zero
'b' : 'M', // abbreviated month name (e.g., Jan)
'B' : 'MM', // full month name (e.g., January)
'y' : 'yy', // 2-digit year
'Y' : 'yyyy' // 4-digit year
};
function convert_strftime(match, format) {
return format_conversions[format] || match;
}
return function (strftime) {
return strftime.replace(/%(-?[dmyab])/gi, convert_strftime);
};
})();
console.log(convert_ruby_strftime_to_datepicker_format('%d/%m/%Y'));
// dd/mm/yyyy
console.log(convert_ruby_strftime_to_datepicker_format('%d %-d %a %A %-m %m %b %B %y %Y %M %w'));
// dd d D DD m mm M MM yy yyyy %M %w
已知格式被转换,未知格式被传递。
相关文章:
- 如何在JavaScript中将字符串转换为函数引用
- 如何在 Javascript 中将变量的值从字符串转换为整数
- 将字符串转换为格式化日期
- IE在将字符串转换为日期时从日期中删除4小时
- node.js将字符串转换为要上传到Web服务器的文件
- 将字符串转换为JS对象
- 在js中将字符串转换为十六进制
- 试图了解如何使用parseFloat将字符串转换为数字
- 如何在html中将字符串转换为数字?以及如何将变量传递到scriptlet代码中
- 将字符串转换为GWT中的JSON对象(JSNI)
- 如何使用Razor显示模板将字符串转换为html字符串
- 将字符串转换为数组编号Javascript
- js字符串转换为具有两个值的对象
- 转换<a>使用jQuery将文本字符串转换为dom元素
- Jquery-将字符串转换为reg exp对象
- 使用JavaScript将客户端日期/时间字符串转换为JSON日期/时间串
- 将JavaScript字符串转换为整数
- moment js,将EST字符串转换为UTC
- 如何在javascript中将字符串转换为有效日期
- 通过JQuery将字符串转换为JSON