将角度2和离子2中的格里高利日期转换为波斯语(jalali)日期 [英] Convert gregorian date to persian(jalali) date in angular 2 and Ionic 2
问题描述
我熟悉位于npm的一个包用于将格里高利日期转换为波斯语(jalali),但我不知道如何在离子2角度2项目中使用它。
I'm familiar with one package located in npm for converting gregorian date to persian (jalali), but i don't know how should i use it in ionic 2 angular 2 projects.
或角度为1的此套餐:
< a href =https://github.com/AmirkabirDataMiners/ADM-dateTimePicker =noreferrer> ADM-dateTimePicker
是否可以将此包转换为角度2?任何想法?或教程是受欢迎的...
is it possible to convert this package to angular 2? any idea? or tutorial are welcome...
推荐答案
好的,我为此编写了转换器,
ok, i wrote convertor for this purpose,
首先在项目中添加提供者:
first add a provider in your project:
import {Injectable} from '@angular/core';
@Injectable()
export class PersianCalendarService {
weekDayNames: string[] = ["شنبه", "یکشنبه", "دوشنبه",
"سه شنبه", "چهارشنبه",
"پنج شنبه", "جمعه"];
monthNames: string[] = [
"فروردین",
"اردیبهشت",
"خرداد",
"تیر",
"مرداد",
"شهریور",
"مهر",
"آبان",
"آذر",
"دی",
"بهمن",
"اسفند"];
strWeekDay: string = null;
strMonth: string = null;
day: number = null;
month: number = null;
year: number = null;
ld: number = null;
farsiDate: string = null;
today: Date = new Date();
gregorianYear = null;
gregorianMonth = null;
gregorianDate = null;
WeekDay = null;
buf1: number[] = [0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334];
buf2: number[] = [0, 31, 60, 91, 121, 152, 182, 213, 244, 274, 305, 335];
constructor() {
}
PersianCalendar(gregorianDate): string {
this.today = gregorianDate;
this.gregorianYear = this.today.getFullYear();
this.gregorianMonth = this.today.getMonth() + 1;
this.gregorianDate = this.today.getDate();
this.WeekDay = this.today.getDay();
this.toPersian(gregorianDate);
return this.strWeekDay + " " + this.day + " " + this.strMonth + " " + this.year;
}
toPersian(gregorianDate) {
if ((this.gregorianYear % 4) != 0)
this.farsiDate = this.func1();
else
this.farsiDate = this.func2();
this.strMonth = this.monthNames[Math.floor(this.month - 1)];
this.strWeekDay = this.weekDayNames[this.WeekDay + 1];
}
func1(): string {
this.day = this.buf1[this.gregorianMonth - 1] + this.gregorianDate;
if (this.day > 79) {
this.day = this.day - 79;
if (this.day <= 186) {
var day2 = this.day;
this.month = (day2 / 31) + 1;
this.day = (day2 % 31);
if (day2 % 31 == 0) {
this.month--;
this.day = 31;
}
this.year = this.gregorianYear - 621;
}
else {
var day2 = this.day - 186;
this.month = (day2 / 30) + 7;
this.day = (day2 % 30);
if (day2 % 30 == 0) {
this.month = (day2 / 30) + 6;
this.day = 30;
}
this.year = this.gregorianYear - 621;
}
}
else {
this.ld = this.gregorianYear > 1996 && this.gregorianYear % 4 == 1 ? 11 : 10;
var day2 = this.day + this.ld;
this.month = (day2 / 30) + 10;
this.day = (day2 % 30);
if (day2 % 30 == 0) {
this.month--;
this.day = 30;
}
this.year = this.gregorianYear - 622;
}
var fullDate = this.day + "/" + Math.floor(this.month) + "/" + this.year;
return fullDate
}
func2(): string {
//console.log("entered func2");
this.day = this.buf2[this.gregorianMonth - 1] + this.gregorianDate;
this.ld = this.gregorianYear >= 1996 ? 79 : 80;
if (this.day > this.ld) {
this.day = this.day - this.ld;
if (this.day <= 186) {
var day2 = this.day;
this.month = (day2 / 31) + 1;
this.day = (day2 % 31);
if (day2 % 31 == 0) {
this.month--;
this.day = 31;
}
this.year = this.gregorianYear - 621;
} else {
var day2 = this.day - 186;
this.month = (day2 / 30) + 7;
this.day = (day2 % 30);
if (day2 % 30 == 0) {
this.month--;
this.day = 30;
}
this.year = this.gregorianYear - 621;
}
var fullDate = this.day + "/" + Math.floor(this.month) + "/" + this.year;
return fullDate
}
else {
var day2 = this.day + 10;
this.month = (day2 / 30) + 10;
this.day = (day2 % 30);
if (day2 % 30 == 0) {
this.month--;
this.day = 30;
}
this.year = this.gregorianYear - 622;
}
}
}
下一步:导入此您的代码中的服务:
the next step: import this service in your code:
import {PersianCalendarService} from '../../providers/persian-calendar-service/persian-calendar-service';
下一步:在 @Page 部分中实施提供商的名称
the next step: implement the provider's name in @Page section
@Page({
templateUrl: 'build/pages/getting-started/getting-started.html',
providers: [PersianCalendarService]
})
和构造函数
constructor(
public persianCalendarService: PersianCalendarService) {}
然后只需要将日期传递给函数以获得Jalali日期的良好输出:
then just you need to pass the date to the function for getting a nice output of Jalali date:
getJalaliDate(date) {
var date1 = this.persianCalendarService.PersianCalendar(date);
this.farsiDate = date1;
}
我会添加这个github中的代码很快。
谢谢
i'll add this code in github soon. Thanks
这篇关于将角度2和离子2中的格里高利日期转换为波斯语(jalali)日期的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!